如何将数字时区转换为UTC?

How to convert timezone in number to UTC?

我有一些不同时区的随机日期,它们的格式类似于 "07 Mar 2022 13:52:00 -0300",或者它们可能像这样:"07 Mar 2022 11:12:00 -0700"。我不知道他们将来自哪个时区。如何将它们全部转换为 UTC 时间 "0000Z"?

我建议 import datetime,然后使用以下方法将您的时间戳转换为日期时间对象(其中 str 是字符串形式的时间戳):time_stamp = datetime.strptime(str, "%d %b %Y")(其中后面的参数str 提供有关格式的信息;有关详细信息,请参见此处:https://www.programiz.com/python-programming/datetime/strptime).

之后,您可以使用datetime.astimezone()将其转换为另一个时区。

您可以为此使用标准模块 datetime

函数 strptime() (string parsing time) 可以使用匹配模式将字符串转换为对象 datetime。对于您的示例作品模式 '%d %b %Y %H:%M:%S %z'

接下来可以用.astimezone(datetime.timezone.utc)转换成UTC

稍后您可以使用 strftime() (string formatting time) 再次使用模式 '%d %b %Y %H:%M:%S %z' 格式化字符串(或者您可以跳过 %z


最小工作代码:

import datetime

data = [
    "07 Mar 2022 13:52:00 -0300",
    "07 Mar 2022 11:12:00 -0700",
]

for item in data:
    print('before str:', item)

    dt = datetime.datetime.strptime(item, '%d %b %Y %H:%M:%S %z')
    print('before dt :', dt)

    dt = dt.astimezone(datetime.timezone.utc)
    print('after  dt :', dt)

    print('after  str:', dt.strftime('%d %b %Y %H:%M:%S %z'))

    print('---')

结果:

before str: 07 Mar 2022 13:52:00 -0300
before dt : 2022-03-07 13:52:00-03:00
after  dt : 2022-03-07 16:52:00+00:00
after  str: 07 Mar 2022 16:52:00 +0000
---
before str: 07 Mar 2022 11:12:00 -0700
before dt : 2022-03-07 11:12:00-07:00
after  dt : 2022-03-07 18:12:00+00:00
after  str: 07 Mar 2022 18:12:00 +0000
---