繁体   English   中英

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

[英]How to convert string datetime to UTC UNIX?

我在 as string中有以下格式的date202001010000

我正在尝试将其转换为 UNIX 格式并以UTC格式获取结果

我做了:

import datetime

stime = "202001010000"

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

这给了我 UNIX 中的 output,但采用CEST格式。

使用上面的代码,我得到: 1577836800但我希望 output 为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

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

你想要得到的是 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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM