Pythonでタイムスタンプの文字列をパースするには「time.strftime」が紹介されることが多いですが、実はもっと簡単な方法があります。この方法では、グリニッジ標準時→東京時間のような時差変換(時差を意識したタイムスタンプへの変換)も同時に行うことができ、とても便利です。
目次
Pythonに限ったことではないですが、一般に日付データはバグの温床となりやすいです。例えば、
などなど、日付データは厄介な問題を抱えがちな困ったちゃんです。日付データの変換をいちいち自分で書かかずに、いい感じにやってくれるライブラリがあるととても嬉しいのです。
いい感じに変換してくれるクラスは実はpandasにあります。pd.Timestampを使います。
import pandas as pd
t1 = pd.Timestamp("Tue, 03 Jul 2018 05:40:23 +0000")
t2 = pd.Timestamp("2017-03-12T11:50:40+09:00")
print(t1) # 2018-07-03 05:40:23+00:00
print(t2) # 2017-03-12 11:50:40+09:00
ワンライナーでできてとても便利。
読み込み時にタイムゾーンを変換したい場合は、「tz=」以下にタイムゾーンを指定します。t1を東京時間、t2をグリニッジ標準時に変換してみます。
import pandas as pd
t1 = pd.Timestamp("Tue, 03 Jul 2018 05:40:23 +0000", tz="Asia/Tokyo")
t2 = pd.Timestamp("2017-03-12T11:50:40+09:00", tz="GMT")
print(t1) # 2018-07-03 14:40:23+09:00
print(t2) # 2017-03-12 02:50:40+00:00
いちいち足し算引き算をする必要はありません。
pd.Timestampから文字列に変換したい場合は、単にstrでキャストします。
import pandas as pd
t1 = pd.Timestamp("Tue, 03 Jul 2018 05:40:23 +0000", tz="Asia/Tokyo")
str_t1 = str(t1)
print(str_t1) # 2018-07-03 14:40:23+09:00
print(len(str_t1)) # 25 (文字数)
あまりにお手軽なので、日付処理のためだけにPandasを使うの大アリでしょう。