如何将字符串日期时间转换为 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))
我在 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))