[解決済み】標準ライブラリだけを使って、UTCのdatetimeをローカルのdatetimeに変換する方法は?
2022-04-04 13:27:58
質問
私はパイソンを持っています
datetime
を使用して作成されたインスタンスは
datetime.utcnow()
で、データベースに永続化されます。
表示のために
datetime
データベースから取得したインスタンスを、ローカルの
datetime
をデフォルトのローカルタイムゾーンで使用する(つまり、あたかも
datetime
を使用して作成されました。
datetime.now()
).
どのようにすれば、UTC
datetime
をローカルな
datetime
Python 標準ライブラリのみを使って(例えば
pytz
依存関係)ですか?
一つの解決策としては
datetime.astimezone(tz)
しかし、デフォルトのローカルタイムゾーンはどのように取得するのでしょうか?
解決方法は?
エポックからの秒数を計算し、time.localtime を使用してローカルの timzeone に変換し、time 構造体を datetime に戻す...というのがわかったと思います。
EPOCH_DATETIME = datetime.datetime(1970,1,1)
SECONDS_PER_DAY = 24*60*60
def utc_to_local_datetime( utc_datetime ):
delta = utc_datetime - EPOCH_DATETIME
utc_epoch = SECONDS_PER_DAY * delta.days + delta.seconds
time_struct = time.localtime( utc_epoch )
dt_args = time_struct[:6] + (delta.microseconds,)
return datetime.datetime( *dt_args )
夏時間/冬時間のサマータイムを正しく適用します。
>>> utc_to_local_datetime( datetime.datetime(2010, 6, 6, 17, 29, 7, 730000) )
datetime.datetime(2010, 6, 6, 19, 29, 7, 730000)
>>> utc_to_local_datetime( datetime.datetime(2010, 12, 6, 17, 29, 7, 730000) )
datetime.datetime(2010, 12, 6, 18, 29, 7, 730000)
関連
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] DateTimeとDateTimeOffsetの比較
-
[解決済み] datetimeをdateに変換するにはどうすればよいですか?
-
[解決済み] Pythonでタイムゾーンを意識したdatetimeオブジェクトを作るには?
-
[解決済み] Pythonのstdlibを使ったローカルIPアドレスの検索
-
[解決済み] ローカルタイム文字列をUTCに変換する方法は?
-
[解決済み] [Solved] Pythonでdatetime.day()の値を「タイムゾーンを考慮」して取得するにはどうすればよいですか?
-
[解決済み】UTCの日付時間の文字列をローカルの日付時間に変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み] データ型が理解できない
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] オフセット無視のデータタイムとオフセット考慮のデータタイムを引き算できない
-
[解決済み] ローカルタイム文字列をUTCに変換する方法は?
-
[解決済み】Pythonで、`datetime`オブジェクトを秒に変換する方法は?
-
[解決済み】pythonでdatetimeをUnixタイムスタンプに変換して元に戻す
-
[解決済み】UTCの日付時間の文字列をローカルの日付時間に変換する