我正在尝试将UTC时间戳转换为西班牙时区的时间戳。
>>> import datetime as dt
>>> import pytz
>>> today = dt.datetime.utcfromtimestamp(1573516800)
datetime.datetime(2019, 11, 12, 0, 0)
>>> today.replace(tzinfo=pytz.timezone('Europe/Madrid')).timestamp()
1573517700.0
但是,如果我从原始时间戳中减去时间戳,则会得到
>>> 1573517700 - 1573516800
900
并且900秒等于15分钟。我觉得这很令人惊讶-我原本希望相差1小时。
我应该如何将UTC时间戳转换为西班牙时区?
编辑
[为了澄清,如果我输入1573516800
,这对应于2019年11月12日的开始。在西班牙时区,这是一个小时的向前。因此,我想返回1573520400
(1573516800 + 60 * 60)
EDIT2
[如果我使用Etc/GMT+1
而不是Europe/Madrid
,则可以使用。我觉得这很令人惊讶,好像我在Google“ timezone Madrid”上找到了
[西班牙马德里时区(GMT + 1)
一个大问题是原始日期和知道偏移的日期时间之间的差异
import datetime as dt
import pytz
today = dt.datetime.utcfromtimestamp(1573516800)
# define the old and new timezones
old_timezone = pytz.timezone("UTC")
new_timezone = pytz.timezone("Europe/Madrid")
# get an 'offset-aware' datetime
my_timestamp = old_timezone.localize(today)
# returns datetime in the new timezone
my_timestamp_in_new_timezone = my_timestamp.astimezone(new_timezone)
print("Old:", str(my_timestamp), "\nNew:", str(my_timestamp_in_new_timezone), "\nDifference:", str(my_timestamp-my_timestamp_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?
一个大问题是原始日期和知道偏移的日期时间之间的差异
import datetime as dt
import pytz
today = dt.datetime.utcfromtimestamp(1573516800)
# define the old and new timezones
old_timezone = pytz.timezone("UTC")
new_timezone = pytz.timezone("Europe/Madrid")
# get an 'offset-aware' datetime for UTC
my_timestamp = old_timezone.localize(today)
# returns datetime in the new timezone
my_timestamp_in_new_timezone = old_timezone.localize(today).astimezone(new_timezone)
print("Old:" + str(my_timestamp), + "\n New:" + str(my_timestamp_in_new_timezone), "\nDifference:" + str(my_timestamp-my_timestamp_in_new_timezone))
代码改编自:Python: How do you convert datetime/timestamp from one timezone to another timezone?