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

发布于 2025-01-12 07:24:18 字数 182 浏览 1 评论 0原文

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

I have some random dates with different timezones, they are in formats like this "07 Mar 2022 13:52:00 -0300", or they could be like this: "07 Mar 2022 11:12:00 -0700". I don't know which timezone exactly they will be coming from. How can I convert all of them to UTC time "0000Z"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怕倦 2025-01-19 07:24:18

您可以使用标准模块 datetime 来实现此目的。

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

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

稍后您可以再次使用模式 '%d %b %Y %H:%M:%S 使用 strftime()字符串格式化时间)格式化字符串%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
---

You can use standard module datetime for this.

Function strptime() (string parsing time) can convert string to object datetime using matching pattern. For your examples works pattern '%d %b %Y %H:%M:%S %z'

Next you can use .astimezone(datetime.timezone.utc) to convert to UTC.

And later you can format string with strftime() (string formatting time) using again pattern '%d %b %Y %H:%M:%S %z' (or you can skip %z)


Minimal working code:

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('---')

Result:

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
---
夏末 2025-01-19 07:24:18

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

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

I would suggest to import datetime, then use the following method to convert your time stamps into datetime objects (where str is the time stamp as a string): time_stamp = datetime.strptime(str, "%d %b %Y") (where the parameter after str gives information on the formatting; for details see here: https://www.programiz.com/python-programming/datetime/strptime).

After that, you can use datetime.astimezone() to convert this into another time zone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文