如何将字符串日期时间转换为 UTC UNIX?

How to convert string datetime to UTC UNIX?

我在 as string 中有 date,格式如下:202001010000

我正在尝试将其转换为 UNIX 格式并在 UTC

中获得结果

我做到了:

import datetime

stime = "202001010000"

print(int(datetime.datetime.strptime(stime, "%Y%m%d%H%M").replace(tzinfo=datetime.timezone.utc).timestamp()))

这是 UNIX 中的输出,但格式为 CEST

使用上面的代码我得到:1577836800 但我希望输出为 1577833200

我做错了什么?

您在转换为日期时间时将时区设置为 UTC。但是由于您的输入代表德国的时间,因此您需要一个在那里有效的时区。例如:

from datetime import datetime
from zoneinfo import ZoneInfo # Python 3.9+, can use backports.zoneinfo for older versions

stime = "202001010000"
# stime represents time in Germany so we use time zone
time_zone = ZoneInfo('Europe/Berlin')

# to datetime, with tz set:
dtobj = datetime.strptime(stime, "%Y%m%d%H%M").replace(tzinfo=time_zone)

# unix time
ts = dtobj.timestamp()
print(ts)
# 1577833200.0

# back to datetime, again specify time zone
dtobj = datetime.fromtimestamp(ts, tz=time_zone)
print(dtobj)
# 2020-01-01 00:00:00+01:00

请注意,如果输入代表您的 OS 配置使用的相同时区,则无需设置时区即可正常工作。但我认为最好在这里明确说明,以避免混淆,例如运行 此脚本在配置为使用另一个时区的计算机上。

你想要得到的东西晚了 7 个小时,你不能从你的开始日期开始。您必须将开始日期推迟 1 天,并将工作时间提前 17 天。此代码适用于您

import datetime

stime = "201912310000"

my_date = datetime.datetime.strptime(stime, "%Y%m%d%H%M")
my_date_utc = my_date.replace(hour=17)
my_timestamp = my_date_utc.timestamp()
print(int(my_timestamp))