将时区从“ UTC”转换为“欧洲/马德里”会增加15分钟?

问题描述 投票:0回答:1

我正在尝试将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)

python datetime timezone pytz
1个回答
0
投票

一个大问题是原始日期和知道偏移的日期时间之间的差异

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?


0
投票

一个大问题是原始日期和知道偏移的日期时间之间的差异

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?

© www.soinside.com 2019 - 2024. All rights reserved.