[解決済み] [Solved] Pythonでdatetime.day()の値を「タイムゾーンを考慮」して取得するにはどうすればよいですか?
質問
の値から日付の値を1つ引こうとしています。
datetime.datetime.today()
を使用して、何年前のことかを計算します。しかし、それは文句を言う。
TypeError: can't subtract offset-naive and offset-aware datetimes
値
datetime.datetime.today()
はタイムゾーンを意識していないようですが、他の日付の値は意識しています。どうすれば
datetime.datetime.today()
タイムゾーンを意識しているのでしょうか?
今現在は、現地時間の時刻が表示されていますが、それはたまたまPSTであり、つまりUTC-8時間となっています。最悪の場合、タイムゾーンの値を手動で
datetime
オブジェクトを返します。
datetime.datetime.today()
をUTC-8に設定しますか?
もちろん、タイムゾーンを自動的に知ることができるのが理想的です。
解決方法は?
標準ライブラリでは、独自のタイムゾーンクラスを作成することなく、認識できるタイムゾーンを作成するクロスプラットフォームの方法はありません。(
編集する
Python 3.9 で導入された
zoneinfo
の標準ライブラリで、この機能を提供しています)。
Windowsでは
win32timezone.utcnow()
しかし、それはpywin32の一部です。私はむしろ
pytz ライブラリ
これは、ほとんどのタイムゾーンのデータベースを常に更新しています。
ローカルタイムゾーンの扱いは非常に難しいので(以下のリンクを参照)、アプリケーション全体を通してUTCを使用することをお勧めします(特に2つの時点の差を計算するような算術操作)。
このように現在の日時を取得することができます。
import pytz
from datetime import datetime
datetime.utcnow().replace(tzinfo=pytz.utc)
注意点
datetime.today()
と
datetime.now()
が返されます。
ローカル
を適用することで、UTC時間ではなく、時刻を取得することができます。
.replace(tzinfo=pytz.utc)
を追加するのは正しくありません。
もうひとつの素敵な方法として
datetime.now(pytz.utc)
の方が少し短いですが、同じようなことができます。
多くの場合、UTCを選択する理由をさらに読み、見る。
- pytz ドキュメント
- 開発者が知っておくべき時間について - 実際のユースケースに即した開発のヒントが満載
- 時刻とタイムゾーンの問題点 - Computerphile - タイムゾーンを扱う複雑さについて、面白くて目からウロコの説明(ビデオ)
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonでタイムゾーンを意識したdatetimeオブジェクトを作るには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
python implement mysql add delete check change サンプルコード
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] オフセット無視のデータタイムとオフセット考慮のデータタイムを引き算できない
-
[解決済み] Pythonでタイムゾーンを意識したdatetimeオブジェクトを作るには?