python日期处理填坑

2018-09-30  本文已影响0人  唯此

字符串转化为pd.Timestamp中带上时区

使用pd.Timestamp方法的话会转为一个带上时区标记的Timestamp,而使用pd.to_datetime则不会有.


image.png

日期转换中的时区转换

如果想要避免日期转换的麻烦,直接使用pd.to_datetime方法就行了(同时要指定时间单位为秒),不要使用dt库里面的方法.

import pandas as pd
import datetime as dt
import time
dd2 = pd.to_datetime(1381234567, unit="s") # 不会做时区转化
dt1 = dt.datetime.fromtimestamp(1381234567) # 会自动做时区转化,转化到东8区(当地时区)
dt1_json = pd.DataFrame(data=[[dt1]]).to_json(date_unit="s") # 时间戳会自动多8个小时.
dt3 = dt.datetime.fromtimestamp(1381234567, tz=dt.timezone(dt.timedelta(hours=8))) # 与dt1结果一样
dt2 = dt.datetime.fromtimestamp(1381234567, tz=dt.timezone(dt.timedelta(hours=0))) # 比dt1少了8小时
运行结果

time.time()获取的结果为标准时间戳

time.time()如果直接使用pd.to_datetime方法来转化的话,会与当前的北京时间相差8小时. 所以一般需要做修正.

EIGHT_HOUR_SECONDS = 28800
now_ts = int(time.time()) + EIGHT_HOUR_SECONDS #时区调整
上一篇 下一篇

猜你喜欢

热点阅读