为什么纪元时间转换错误?什么是正确和最快的方法?

Why getting epoch time conversion wrong? What is the right and quickest way?

我的objective : 以最快的方式转换这个时间戳。

{'timestamp': 1533203940000, 'open': 564.1, 'high': 567.55, 'low': 563.4, 'close': 564.45, 'volume': 522096, 'cp': 564.45}

进入“2018-08-02 15:29:00”(这是我应该得到的)

但是,我没有把它转换成right.Hours是错误的。 也许与时区有关?我试过了....

n=np.array([1533203940]).astype('datetime64[s]')

我得到:

['2018-08-02T09:59:00']

然后....

time.gmtime(1533203940)

也错了....

time.struct_time(tm_year=2018, tm_mon=8, tm_mday=2, tm_hour=9, 
tm_min=59, tm_sec=0, tm_wday=3, tm_yday=214, tm_isdst=0)

Pandas也不对。

pd.to_datetime(1533203940,unit='s')

它给....

2018-08-02 09:59:00

只有 datetime 才正确!!!

datetime.fromtimestamp(1533203940)

这给出了..

2018-08-02 15:29:00

其他人哪里出错了?如果没有答案,我以后的计算可能会出错,我什至可能都没有意识到:(

看来你需要这样的东西

df['timestamp'] = pd.to_datetime(df['timestamp'], unit= 'ms').dt.tz_localize('utc') \
    .dt.tz_convert(tz='USE YOUR TIME ZONE HERE').apply \
    (lambda x: datetime.replace(x, tzinfo=None))