UTC时间戳:自1970年1月1日UTC以来的秒数。
Python日期时间:用户友好的查看时间的好方法
UTC时间戳不受时区影响,但datetime受到影响。
此代码采用给定的时间戳,并将其转换为UTC日期时间和欧洲/马德里时区。
import datetime as dt
import pytz
# define the old and new timezones
old_timezone = pytz.timezone("UTC")
new_timezone = pytz.timezone("Europe/Madrid")
# get an 'offset-aware' datetime
today = dt.datetime.utcfromtimestamp(1573516800)
my_datetime = old_timezone.localize(today)
# returns datetime in the new timezone
my_datetime_in_new_timezone = my_datetime.astimezone(new_timezone)
print("Old:",str(my_datetime),"\nNew:",str(my_datetime_in_new_timezone),"\nDifference:",str(my_datetime - my_datetime_in_new_timezone))
输出:
Old: 2019-11-12 00:00:00+00:00
New: 2019-11-12 01:00:00+01:00
Difference: 0:00:00
代码改编自:
Python: How do you convert datetime/timestamp from one timezone to another timezone?
,
几件事:
-
Europe/Madrid
在标准时间是UTC + 1,在夏季时间(又名夏时制)是UTC + 2。
-
Etc/GMT+1
是整年的UTC-1。请注意,该符号与您预期的相反。请参阅tzdata源和on Wikipedia中的说明。
-
由于马德里在您提供的日期是UTC + 1,因此如果您使用Etc/GMT-1
,则在该日期将获得相同的结果。但是,我不建议这样做,因为这样以后您在夏季的某个日期会得到错误的结果。
-
Etc/GMT±X
区域主要用于不可定位的场景,例如跟踪海上船上的时间-不适用于陆地上的人口稠密位置。
-
如Mason's answer所示,您应该使用localize
函数而不是replace
来分配时区。 in the pytz documentation对此进行了介绍。
本文链接:https://www.f2er.com/3116636.html