Python の標準ライブラリを使用して UTC 日時をローカル タイムゾーンに変換する方法

Susan Sarandon
リリース: 2024-11-01 14:20:29
オリジナル
669 人が閲覧しました

How to Convert UTC Datetime to Local Timezone Using Python's Standard Library?

標準ライブラリを使用して UTC 日時をローカル タイムゾーンに変換する

日時を操作するとき、特に永続化されたデータを取得して表示するときに、異なるタイムゾーン間で変換する必要があることがよくあります。この記事では、Python 標準ライブラリのみを使用して UTC 日付時刻をローカル日付時刻に変換する方法を示し、Python 2 および 3 用の複数のソリューションを提供します。

デフォルトのローカル タイムゾーン

UTC 日付時刻を次の形式に変換するにはローカル日時の場合は、デフォルトのローカルタイムゾーンを知る必要があります。残念ながら、Python にはこの情報を取得する簡単な方法がありません。ただし、タイムゾーン オブジェクトを作成して使用してそれを表すことができます。

datetime.astimezone() を使用する

Python 3.3 では、 datetime.astimezone(tz) メソッドを利用して、 datetime をローカルタイムゾーンに変換します。ただし、デフォルトのローカル タイムゾーンを取得する必要があります。これは、timezone.utc を使用して実現できます。

<code class="python">from datetime import datetime, timezone

def utc_to_local(utc_dt):
    return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)</code>
ログイン後にコピー

カレンダーと日時の使用

Python 2/3 では、datetime.astimezone () は使用できないため、次のアプローチを使用できます:

<code class="python">import calendar
from datetime import datetime, timedelta

def utc_to_local(utc_dt):
    # get integer timestamp to avoid precision lost
    timestamp = calendar.timegm(utc_dt.timetuple())
    local_dt = datetime.fromtimestamp(timestamp)
    assert utc_dt.resolution >= timedelta(microseconds=1)
    return local_dt.replace(microsecond=utc_dt.microsecond)</code>
ログイン後にコピー

使用例

カスタム書式設定関数で utc_to_local() 関数を使用する例を次に示します:

<code class="python">from datetime import datetime

def aslocaltimestr(utc_dt):
    return utc_to_local(utc_dt).strftime('%Y-%m-%d %H:%M:%S.%f %Z%z')

utc_dt1 = datetime(2010, 6, 6, 17, 29, 7, 730000)
utc_dt2 = datetime(2010, 12, 6, 17, 29, 7, 730000)
utc_dt3 = datetime.utcnow()

print(aslocaltimestr(utc_dt1))
print(aslocaltimestr(utc_dt2))
print(aslocaltimestr(utc_dt3))</code>
ログイン後にコピー

結論

Python の標準ライブラリのみを使用して UTC 日時をローカル日時に変換するには、タイムゾーン オブジェクトを作成するか、カレンダーと日時の操作を含むより複雑なアプローチを使用する必要があります。 pytz または tzlocal を使用する方が便利ですが、これらのソリューションは、外部依存関係なしで日時変換を処理するための Python の標準ライブラリの柔軟性を示しています。

以上がPython の標準ライブラリを使用して UTC 日時をローカル タイムゾーンに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート