Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでタイムゾーンを変換する方法!pytzを使った日時処理の基本

Pythonで日付や時刻のタイムゾーンを扱う最も手軽な方法は、pytzモジュールを利用することです。このライブラリを使えば、正確かつクロスプラットフォーム対応のタイムゾーン計算が可能になります。

pytzとは?

pytzは、広く知られているOlsonタイムゾーンデータベース(tz database)をPythonに取り込むライブラリです。これにより、世界中のあらゆる地域のタイムゾーン情報を簡単に参照できるようになります。

さらに、サマータイム(夏時間)終了時に発生する「時刻の曖昧さ」の問題も解決してくれます。この問題について詳しくは、Python公式ドキュメントの datetime.tzinfo の項目を参照してください。

pytzのインストール方法

使用前に、以下のコマンドでpip経由でインストールしておきましょう。

$ pip install pytz

実装例:UTCから他のタイムゾーンへ変換する

以下は、現在のUTC時刻を取得し、それを「Asia/Kolkata」(インド標準時)に変換するサンプルコードです。

from datetime import datetime
from pytz import timezone

format = "%Y-%m-%d %H:%M:%S %Z%z"

# 現在のUTC時刻を取得
now_utc = datetime.now(timezone('UTC'))
print(now_utc.strftime(format))

# Asia/Kolkata(インド標準時)に変換
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
print(now_asia.strftime(format))

実行結果

このコードを実行すると、次のような出力が得られます。

2018-01-03 07:05:50 UTC+0000
2018-01-03 12:35:50 IST+0530

出力を見ると、UTC時刻が5時間30分進んだインド標準時(IST+0530)に正しく変換されていることがわかります。このように、astimezone()メソッドとpytzのタイムゾーンオブジェクトを組み合わせることで、任意の地域の時刻への変換がシンプルに実現できます。

補足:Python 3.9以降ではzoneinfoも選択肢に

なお、Python 3.9以降では標準ライブラリのzoneinfoモジュールが利用可能になり、外部ライブラリなしでもIANAタイムゾーンデータベースを扱えるようになりました。新規プロジェクトでは from zoneinfo import ZoneInfo を使う方法も検討するとよいでしょう。ただし、古いバージョンのPythonをサポートする必要がある場合や、既存のコードベースとの互換性を保ちたい場合には、依然としてpytzが有用な選択肢となります。

  1. Android SQLiteで日付と時刻をint(UNIXタイムスタンプ)に変換する方法

    AndroidのSQLiteデータベースとは具体的な手順に入る前に、AndroidにおけるSQLiteデータベースについて簡単におさらいしておきましょう。SQLiteはオープンソースのSQLデータベースエンジンで、デバイス上のテキストファイルにデータを保存します。Androidには標準でSQLiteの実装が組み込まれており、リレーショナルデータベースの基本的な機能をすべて利用できます。また、JDBCやODBCのように接続を確立する処理が不要な点も大きな特徴です。アプリから直接データベースファイルへアクセスできるため、ローカルデータ保存の定番手段として広く使われています。本記事では、Androi

  2. OneNoteで日付と時刻を追加・編集する方法

    OneNoteで新しいページを作成すると、ノートブックに日付と時刻のスタンプが自動的に追加されます。この自動の日付と時刻は編集可能で、OneNoteが提供するタイムスタンプ機能を使えば、ページに自由に日付や時刻を追加することもできます。さらに、現在の日付や過去の日付を追加したり、特定の日付を入力して祝日などの予定を記録しておくことも可能です。 OneNoteで日付と時刻を挿入する方法 タイムスタンプとは、ノートブックのページに日付や時刻を追加できるOneNoteの便利な機能です。OneNoteで利用できるタイムスタンプには、以下の3種類があります。 日付: 今日の日付を挿入します。 時刻: