存在的事物
import datetime
import dateutil.parser
import time
timestamp = dateutil.parser.parse(response["body"]["inserted_at"])
出了什么问题
该时间戳为UTC
,但应为UTC+1
或TimeZone Europe,Zurich
问题
我应该在现有代码中添加什么以具有时间戳记as Europe,Zurich, and no more
UTC`?
预先感谢
答案 0 :(得分:1)
您要使用datetime.datetime
的{{3}}方法。如果您在任何时区(例如
G。 UTC)并希望将其放在其他区域,请使用dt_new_tz = dt_old_tz.astimezone(new_tz)
在这种情况下,您需要:
from dateutil import tz
zurich_tz = tz.gettz("Europe/Zurich")
new_ts = timestamp.astimezone(zurich_tz)
答案 1 :(得分:0)
Paul显示的astimezone()
方法将调整日期和时间以匹配新时区。 通常这就是您想要的。例如,如果您拥有的时间戳是UTC,并且想要将其转换为UTC + 1(或任何其他时区),那么您需要添加一个小时(或执行其他一些算术运算),astimezone()
会为您完成。它还照顾夏时制或夏令时,以及许多more substantial时区不规则性。
但是,有时候这不是您想要的。例如,如果您的UTC + 1时区被错误地标记为UTC,则astimezone()
将增加一个小时,从而产生UTC + 2的日期时间,而该日期时间被错误地标记为UTC + 1。如果这描述了您的问题,则应使用replace()
方法而不是astimezone()
。这将简单地“重新标记”时区,而无需执行任何转换算法。例如,它将14:00 UTC转换为14:00 UTC + 1。如果您的时间戳没有时区信息,或者解析器不够智能,无法理解给定的时区信息,则此功能非常有用。
(您需要知道这两个问题中的哪一个。由于Python无法猜测您的意图,因此无法自动确定您的datetime对象是否具有“正确的”时区信息。)