自力でパースするんならこんな感じでしょうか。
Python 標準ライブラリ - datetime - strftime() と strptime() の振る舞い
Python
1from datetime import datetime
2
3tweet = {
4 'create_at': 'Fri Mar 23 05:26:17 +0000 2018'
5}
6
7def make_convert_date_format(src_format, dst_format):
8 def convert_date_format(s):
9 return datetime.strftime(
10 datetime.strptime(s, src_format),
11 dst_format
12 )
13
14 return convert_date_format
15
16
17convert_date_format = make_convert_date_format(
18 '%a %b %d %H:%M:%S %z %Y', '%Y-%m-%d %H:%M:%S'
19)
20
21src = tweet['create_at']
22dst = convert_date_format(src)
23
24print(dst, type(dst))
実行結果 Wandbox
2018-03-23 05:26:17 <class 'str'>
Twitter APIやSQLの機能を用いてもっと簡単に書く余地があるかもしれませんが。
あるいはtimeオブジェクトを経由した方が良いかも。
コメントを受けて
読み込んで → タイムゾーンを修正 → 出力 とかですかね。
Python
1from datetime import datetime
2
3tweet = {
4 'create_at': 'Fri Mar 23 05:26:17 +0000 2018'
5}
6
7dt = datetime.strptime(
8 tweet['create_at'], '%a %b %d %H:%M:%S %z %Y'
9)
10dt = dt.astimezone()
11
12dst = datetime.strftime(
13 dt, '%Y-%m-%d %H:%M:%S'
14)
15
16print(dst, type(dst))
上記のconvert_date_format関数に放り込んでもいいっちゃいいです。
Python
1def make_convert_date_format(src_format, dst_format):
2 def convert_date_format(s):
3 return datetime.strftime(
4 datetime.strptime(
5 s, src_format
6 ).astimezone(),
7 dst_format
8 )
9
10 return convert_date_format
ただ、そうなると関数の役割が肥大化していくので悩みどころ。