在 Python 中将 UTC 转换为 CST
-
在 Python 中使用
dateutil.tz
模块将日期和时间从 UTC 转换为 CST -
在 Python 中使用
pytz
模块将日期和时间从 UTC 转换为 CST -
在 Python 中使用
zoneinfo
模块将日期和时间从 UTC 转换为 CST
Python 以非常复杂的方式存储日期和时间。它有一个数据类型专门用于存储这种类型的数据。此外,Python 还提供了一个 datetime
模块,该模块提供了几个用于操作日期和时间的类。
转换为不同的时区是操作日期和时间的重要部分。在本文中,我们将讨论两个这样的时区,即 UTC 和 CST,以及将前者转换为后者的不同方法。
datetime
模块是必需的,需要在下面文章中提到的所有方法中导入和使用。
在 Python 中使用 dateutil.tz
模块将日期和时间从 UTC 转换为 CST
dateutil
模块通过提供一些重要的扩展来增强标准的 datetime
模块。dateutil.tz
模块提供了对抽象 datetime.tzinfo
类型进行子类化的时区实现。
在这里,我们将经常使用 tz.gettz()
函数,它本质上是从作为参数传递的给定字符串中检索时区的对象。
以下代码使用 dateutil.tz
模块在 python 中将日期和时间从 UTC 转换为 CST。
import datetime
from dateutil import tz
from_zone = tz.gettz("UTC")
to_zone = tz.gettz("America/Chicago")
json_data = {"time": "2021-10-08T08:17:42Z"}
utc = datetime.datetime.strptime(json_data["time"], "%Y-%m-%dT%H:%M:%SZ")
utc = utc.replace(tzinfo=from_zone)
cst = utc.astimezone(to_zone)
print(utc)
print(cst)
上面的代码提供了以下输出:
2021-10-08 08:17:42+00:00
2021-10-08 03:17:42-05:00
在 Python 中使用 pytz
模块将日期和时间从 UTC 转换为 CST
pytz
模块支持绝大多数时区,使其成为提供日期和时间转换功能的完美模块,并提供在程序员的 python 应用软件中实现简单时区计算的功能。
此外,pytz
模块允许创建智能的 datetime
对象或知道其时区的实例。pytz
模块需要手动安装,可以使用 pip
命令完成。
以下代码使用 pytz
模块在 Python 中将日期和时间从 UTC 转换为 CST
from datetime import datetime, timezone
import pytz
fmt = "%Y-%m-%d %H:%M:%S %Z%z"
e = pytz.timezone("US/Central")
time_from_utc = datetime.fromtimestamp(1607020200, tz=timezone.utc)
time_from = time_from_utc.astimezone(e)
time_from.strftime(fmt)
time_to_utc = datetime.fromtimestamp(1609785000, tz=timezone.utc)
time_to = time_to_utc.astimezone(tz=pytz.timezone("US/Central"))
print(time_to_utc)
print(time_to)
上面的代码提供了以下输出:
2021-01-04 18:30:10+00:00
2021-01-04 12:30:10-06:00
尽管 dateutil.tz
和 pytz
模块都用于在 Python 中实现类似的东西,但它们有一些区别。
pytz
模块支持几乎所有的时区,比dateutil.tz
模块提供的要多得多。pytz
模块的库明显更优化。pytz
模块在历史上比dateutil.tz
更快,但在最近几次更新中差距已经缩小。- 当
pytz
模块不够稳定时,建议在早期版本的 Python 中使用dateutil.tz
模块。
在 Python 中使用 zoneinfo
模块将日期和时间从 UTC 转换为 CST
随着 Python 3.9 的引入,出现了 zoneinfo
模块,无需安装任何其他第三方库来管理时区。zoneinfo
模块自己处理所有事情。
zoneinfo
模块用于提供强大的时区实现,如 PEP 615
中指定的那样,可以支持 IANA
时区数据库。
以下代码使用 zoneinfo
模块在 Python 中将日期和时间从 UTC 转换为 CST。
# >= Python 3.9
from datetime import datetime
from zoneinfo import ZoneInfo
naive_datetime = datetime(2021, 10, 8, 12, 0, 0)
user_tz_preference = ZoneInfo("US/Central")
user_datetime = naive_datetime.replace(tzinfo=user_tz_preference)
user_datetime = datetime(2011, 10, 26, 12, tzinfo=ZoneInfo("US/Central"))
utc_datetime = user_datetime.astimezone(ZoneInfo("UTC"))
print(user_datetime.isoformat())
print(utc_datetime.isoformat())
上面的代码提供了以下输出:
# 2021-10-08T12:00:00-06:00
# 2021-10-08T19:00:00+00:00
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn