有人可以解释吗?
import pandas as pd
import datetime
pd.to_datetime(1532329236726000, unit="us")
返回Timestamp('2018-07-23 07:00:36.726000')
datetime.datetime(2018, 7, 23, 8, 0, 36, 726000).timestamp() * 10**6
返回1532329236726000.0
。
那么1532329236726000
是2018-07-23 07:00:36还是2018-07-23 08:00:36吗?
答案 0 :(得分:1)
这将取决于您创建的datetime对象的时区信息。实际上,在两种情况下,您都创建了朴素的时区对象,但未设置特定的时区
datetime.datetime()
对象可以采用本地时区,而不是pd.to_datetime()
假定的UTC。
datetime.datetime(2018, 7, 23, 7, 0, 36, 726000).replace(tzinfo=pytz.utc).timestamp() * 10**6
返回与您输入原始问题相同的纪元时间
来自python文档
“朴素的对象没有包含足够的信息来明确地相对于其他日期/时间对象定位自身。朴素的对象是否表示协调世界时(UTC),本地时间或其他时区中的时间,完全取决于程序,就像特定程序代表米,英里还是质量取决于程序。天真物体易于理解和使用,而忽略了现实的某些方面。”
https://docs.python.org/3/library/datetime.html
您可以在答案中明确告诉这两个函数,以对构造函数使用wart的形式使用UTC(并且不使用pytz
,如下所示)
datetime.datetime(2018, 7, 23, 7, 0, 36, 726000, tzinfo=datetime.timezone.utc)
pd.to_datetime(1532329236726000, unit="us", utc=True)