小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。
合并表示时,要在时间前面加一大写字母T,如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08。
现有数据:
print(kline_df['datetime'],type(kline_df['datetime'][0] ))
0 2021-02-21T08:49:00.000Z
1 2021-02-21T08:48:00.000Z
2 2021-02-21T08:47:00.000Z
3 2021-02-21T08:46:00.000Z
4 2021-02-21T08:45:00.000Z
…
195 2021-02-21T05:34:00.000Z
196 2021-02-21T05:33:00.000Z
197 2021-02-21T05:32:00.000Z
198 2021-02-21T05:31:00.000Z
199 2021-02-21T05:30:00.000ZName: datetime, Length: 200, dtype: object <class ‘str’>
转换成UTC时间
kline_df['datetime'] = pd.to_datetime(kline_df['datetime'])
0 2021-02-21 08:52:00+00:00
1 2021-02-21 08:51:00+00:00
2 2021-02-21 08:50:00+00:00
3 2021-02-21 08:49:00+00:00
4 2021-02-21 08:48:00+00:00
…
195 2021-02-21 05:37:00+00:00
196 2021-02-21 05:36:00+00:00
197 2021-02-21 05:35:00+00:00
198 2021-02-21 05:34:00+00:00
199 2021-02-21 05:33:00+00:00
Name: datetime, Length: 200, dtype: datetime64[ns, UTC] <class ‘pandas._libs.tslibs.timestamps.Timestamp’>
最后转换为本地时间
kline_df['datetime'] = pd.DatetimeIndex(kline_df['datetime']).tz_convert('Asia/Shanghai')
print(kline_df['datetime'],type(kline_df['datetime'][0] ))
0 2021-02-21 16:53:00+08:00
1 2021-02-21 16:52:00+08:00
2 2021-02-21 16:51:00+08:00
3 2021-02-21 16:50:00+08:00
4 2021-02-21 16:49:00+08:00
…
195 2021-02-21 13:38:00+08:00
196 2021-02-21 13:37:00+08:00
197 2021-02-21 13:36:00+08:00
198 2021-02-21 13:35:00+08:00
199 2021-02-21 13:34:00+08:00
Name: datetime, Length: 200, dtype: datetime64[ns, Asia/Shanghai] <class ‘pandas._libs.tslibs.timestamps.Timestamp’>
tz_convert()用于将tz-aware轴转换为目标时区。
时间戳转换为本地时区
timestamp=1617608820043
time_ = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(timestamp)/1000))