2024-05-23 15:14:21 发布
网友
在将ms解析为datetime时是否可以应用时区
我的分析正在工作,但它显示的是本地时间,而不是时区为的日期时间:
timestamp = datetime.fromtimestamp(float(dt) / 1000.0, tz=pytz.timezone("America/Sao_Paulo"))
不确定是否发生了,因为时区来自我的操作系统
这只是将时间戳解析为您提供的tz(因此它假定dt是本地时间)。如果dt是绝对/UTC,并且要将其转换为本地时区,则需要首先将其解析为UTC datetime,然后移动其时区:
dt
datetime.fromtimestamp(timestamp, pytz.utc).astimezone(pytz.timezone('America/Sao_Paulo'))
例如,使用1234567890:
>>> datetime.fromtimestamp(ts, pytz.utc) datetime.datetime(2009, 2, 13, 23, 31, 30, tzinfo=<UTC>) >>> datetime.fromtimestamp(ts, pytz.utc).astimezone(pytz.timezone('America/Sao_Paulo')) datetime.datetime(2009, 2, 13, 21, 31, 30, tzinfo=<DstTzInfo 'America/Sao_Paulo' -02-1 day, 22:00:00 DST>)
还要注意,由于各种历史原因,正确使用pytz并不像(e.g.)那样简单。如果你要经常处理时区,你可能想看看钟摆,它试图使时区操作更可靠,并提供一个更友好的API
不确定问题出在哪里,它似乎按预期工作。我的当地时间是09:02,圣保罗时区显示为10:02,这似乎是正确的
>>> import datetime, time, pytz >>> tz_1 = pytz.timezone("America/Sao_Paulo") >>> tz_1 <DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD> >>> now = time.time() >>> now 1554382930.1575696 >>> datetime.datetime.fromtimestamp(now) datetime.datetime(2019, 4, 4, 9, 2, 10, 157570) >>> datetime.datetime.fromtimestamp(now, tz=tz_1) datetime.datetime(2019, 4, 4, 10, 2, 10, 157570, tzinfo=<DstTzInfo 'America/Sao_Paulo' -03-1 day, 21:00:00 STD>)
你能详细说明一下哪一部分没有如你所期望的那样展出吗
这只是将时间戳解析为您提供的tz(因此它假定
dt
是本地时间)。如果dt
是绝对/UTC,并且要将其转换为本地时区,则需要首先将其解析为UTC datetime,然后移动其时区:例如,使用1234567890:
还要注意,由于各种历史原因,正确使用pytz并不像(e.g.)那样简单。如果你要经常处理时区,你可能想看看钟摆,它试图使时区操作更可靠,并提供一个更友好的API
不确定问题出在哪里,它似乎按预期工作。我的当地时间是09:02,圣保罗时区显示为10:02,这似乎是正确的
你能详细说明一下哪一部分没有如你所期望的那样展出吗
相关问题 更多 >
编程相关推荐