2 回答
TA贡献1789条经验 获得超10个赞
pd.to_datetime接受一个datetime对象,所以你可以这样做(熊猫假设 UTC):
pd.to_datetime(datetime(2020, 5, 11))
转换为时间戳时你会得到 2 小时的偏移量,因为默认情况下 pythondatetime不知道时区并且会给你一个“天真的”datetime对象(文档在这里:https://docs.python.org/3/library/datetime。 html#aware-and-naive-objects)。生成的时间戳将在当地时区,因此有 2 小时的偏移量。
您可以将tzinfo参数传递给datetime指定时间应被视为 UTC 的对象:
from datetime import datetime
import pandas as pd
import pytz
pd.to_datetime(datetime(2020, 5, 11, 0, 0, 0, tzinfo=pytz.UTC).timestamp()*1e9)
calendar或者,您可以使用以下模块生成 UTC 时间戳:
from datetime import datetime
import pandas as pd
import calendar
timestamp = calendar.timegm(datetime(2020, 5, 11, 0, 0, 0).utctimetuple())
pd.to_datetime(timestamp*1e9)
TA贡献1877条经验 获得超1个赞
如果您的日期时间对象实际上代表本地时间(即您的操作系统设置),您可以简单地使用
from datetime import datetime
import pandas as pd
t = pd.to_datetime(datetime(2020, 5, 11).astimezone())
# e.g. I'm on CEST, so t is
# Timestamp('2020-05-11 00:00:00+0200', tz='Mitteleuropäische Sommerzeit')
请参阅:如何在 Python 中获取“时区感知”的 datetime.today() 值?
请记住,pandas它将把 naive Python datetime 对象当作 UTC 来对待:
from datetime import timezone
t1 = pd.to_datetime(datetime(2020, 5, 11, tzinfo=timezone.utc))
t2 = pd.to_datetime(datetime(2020, 5, 11))
t1.timestamp() == t2.timestamp()
# True
另请参阅:Python datetime 和 pandas 为同一日期提供不同的时间戳
添加回答
举报