字符串转化为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 #时区调整
网友评论