前提・実現したいこと
UTCからJSTを取得したいです。エラーはでなかったのですが、自分が書いたコードですと、イギリス時間から日本時間に代わりません。
該当のソースコード
python
1import datetime as dt 2def utc_to_jst(timestamp_utc): 3 timestamp_utc = timestamp_utc.replace('Z', '') 4 timestamp_utc = dt.datetime.fromisoformat(timestamp_utc) 5 datetime_jst = timestamp_utc.astimezone(dt.timezone(dt.timedelta(hours=+9), 'JST')) 6 day_of_the_week = datetime_jst.strftime('%a, %b') 7 timestamp_jst = dt.datetime.strftime(datetime_jst, '%Y-%m-%d %H:%M:%S.%f') 8 timestamp_jst = dt.datetime.fromisoformat(timestamp_jst) 9 10 11 return timestamp_jst, day_of_the_week 12 13a,b = utc_to_jst("2021-05-25T09:06:42.000Z") 14print(a) 15print(b) 16 17#以下出力 18#a → 2021-05-25 09:06:42 19#b → Tue, May
補足情報(FW/ツールのバージョンなど)
python
1print(dt) 2#<module 'datetime' from '/usr/local/lib/python3.7/datetime.py'>
###お聞きしたいこと
python3.7からfromisoformat() が使えるとのことだったので、それに合わせる形でコーディングしたのですが、どこに間違いがあるのかが分かりません。
また、エラーが出るわけではなく、UTCの入力がそのまま出力されていることに疑問です。
どなたかわかる方がいらっしゃったら、よろしくお願い致します。
回答ではないのでここに書きます。
Windowsで実行したらこうなりました。
2021-05-25 17:06:42
Tue, May
<module 'datetime' from 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\\lib\\datetime.py'>
しかし同じコードをUbuntuで実行してみたら、質問者さんと同様、こうなりました。
2021-05-25 09:06:42
Tue, May
<module 'datetime' from '/usr/lib/python3.8/datetime.py'>
Pythonのバージョンの問題?と思って、WandboxでPython 3.10.0を選んで実行してみても、やはり
2021-05-25 09:06:42
Tue, May
<module 'datetime' from '/opt/wandbox/cpython-head/lib/python3.10/datetime.py'>
いろいろ探ってみましたが、astimezoneの返す値が異なっていることしかわかりませんでした。
timestamp_utcの値と、astimezoneの引数に与えている値は同じでした。
あとはastimezoneの中に入ってデバッグしないとわからない感じです。
以上、ご参考まで。
本筋じゃないのですがタイトルの(Twitter)はなんの意味があったのでしょう?
itagaki様、わかりやすくありがとうございます。自分も、違うところでやってみたところ動きました。。ですがバージョンを確認してもdatetimeモジュールは同じでした。。。もう少し調べてみます!ありがとうございました!!
quickquip様、TwitterのAPIをつかって取得したツイート時間がUTCでしたので、それをJSTに変換したいという意味です。紛らわしくて申し訳ありません。。
"Wed Jun 09 11:00:01 +0000 2021" のスタイルはでてきますが、"2021-05-25T09:06:42.000Z" のスタイルを扱うことがあったかな? とふと気になったもので……
APIのバージョンが変わったからでしょうか。。自分は今、v2を使用しています。
なるほど!
回答3件
あなたの回答
tips
プレビュー