使用以下代码,在转换回 np.datetime64 后,我得到了两个小时的差异。
我怎样才能避免这种情况?(如果这应该成为一个主题:我目前在中欧)
import pandas as pd
import numpy as np
import datetime
a = np.datetime64('2018-04-01T15:30:00').astype("float")
a
b = np.datetime64(datetime.datetime.fromtimestamp(a))
b
Out[18]: numpy.datetime64('2018-04-01T17:30:00.000000')
Run Code Online (Sandbox Code Playgroud)
问题不在于np.datetime64转换,而在于datetime.datetime.fromtimestamp。
从 Numpy 1.11 开始,np.datetime64时区是天真的。它不再假设输入是当地时间,也不再打印当地时间。
但是,datetime.datetime.fromtimestamp确实假设当地时间。来自文档:
\n\n\n返回与 POSIX 时间戳对应的本地日期和时间,例如 time.time() 返回的。如果可选参数 tz 为 None 或未指定,则时间戳将转换为 platform\xe2\x80\x99s 本地日期和时间,并且返回的 datetime 对象是朴素的。
\n
您可以使用datetime.datetime.utcfromtimestamp:
>>> a = np.datetime64(\'2018-04-01T15:30:00\').astype("float")\n>>> np.datetime64(datetime.datetime.utcfromtimestamp(a))\nnumpy.datetime64(\'2018-04-01T15:30:00.000000\')\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
11738 次 |
| 最近记录: |