如何在Python中将带有不同时区的日期和时间进行转换?
在本文中,我们将向您展示如何在Python中转换带有不同时区的日期和时间。
- 使用astimezone()函数
-
使用datetime.now()函数
Python中处理时区日期和时间最简单的方法是使用 pytz 模块。该库允许进行准确且跨平台的时区计算。pytz将Olson tz数据库带入Python。它还解决了夏令时结束时模糊时间的问题,您可以在Python Library Reference(datetime.tzinfo)中阅读更多内容。
在使用它之前,需要使用以下命令安装它 −
pip install pytz
阅读更多:Python 教程
方法1:使用astimezone()函数
算法(步骤)
执行所需任务的算法/步骤如下 −
- 使用import关键字导入datetime(为了使用日期和时间,Python有一个名为datetime的模块)模块。
-
使用import关键字从pytz模块中导入timezone。
-
使用input()函数将日期格式作为字符串输入并创建一个变量来存储它。
-
使用datetime.now()函数获取当前时间(返回当前本地日期和时间),并传递timezone()函数(获取特定位置的时区)并将其参数设置为“UTC”。
-
使用strftime()函数格式化上述DateTime并打印它。
-
使用datetime.astimezone()函数(将datetime类的对象修改为datetime模块中的对象)将上述时间转换为另一个时区,并将新时区作为其参数。
-
使用strftime()函数格式化上述已转换的DateTime并打印它。
示例
以下程序将使用astimezone()函数将当前时间转换为另一个时区后返回−
#导入datetime模块
from datetime import datetime
#从pytz模块中导入timezone
from pytz import timezone
#给出datetime的格式
format = "%Y-%m-%d%H:%M:%S%Z%z"
#在UTC时区中获取当前时间
now_utc = datetime.now(timezone('UTC'))
#使用strftime()函数格式化上述DateTime
print('在UTC时区中的当前时间:',now_utc.strftime(format))
#转换为Asia/Kolkata时区
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
#使用strftime()函数格式化上述DateTime
print('在Asia/Kolkata时区中的当前时间:',now_asia.strftime(format))
输出
执行以上程序后,将生成以下输出−
在UTC时区中的当前时间:2022-09-07 04:23:21 UTC + 0000
在Asia/Kolkata时区中的当前时间:2022-09-07 09:53:21 IST + 0530
方法2:使用datetime.now()函数
算法(步骤)
执行所需任务的算法/步骤如下 −
- 使用import关键字,导入datetime模块(为了处理日期和时间,Python有一个名为datetime的模块)。
-
使用import关键字,从pytz模块导入timezone。
-
将日期时间格式作为字符串给出并将其存储在变量中。
-
使用pytz模块的timezone()函数(获取特定位置的时区)通过将Asia/Kolkata时区作为参数传递给它,并将结果存储在变量中,获取标准的Asia/Kolkata时区。
-
使用pytz模块的timezone()函数(获取特定位置的时区)通过将US/Eastern时区作为参数传递给它,并将结果存储在变量中,获取标准的US/Eastern时区。
-
使用datetime.now()函数(返回当前本地日期和时间)并将上述第一个时区即亚洲/加尔各答时区对象作为参数传递给它(这里将当前日期和时间转换为亚洲/加尔各答时区),获取当前时间。
-
使用strftime()函数(基于格式代码返回表示datetime对象的字符串)来格式化上述datetime对象并打印它。
strftime(format)
-
使用datetime.now()函数获取当前时间,并将上述第二时区即’US/Eastern’时区作为参数传递给它(这里将当前日期和时间转换为’US/Eastern’时区)。
-
使用strftime()函数格式化上述datetime对象并打印它。
例子
下面的程序在使用astimezone()函数将当前时间转换为另一个时区后返回当前时间 –
# 导入datetime模块
from datetime import datetime
# 导入pytz模块
import pytz
# 给出datetime的格式
format = "%Y-%m-%d %H:%M:%S %Z%z"
# 获取标准的UTC时间
original_tz = pytz.timezone('Asia/Kolkata')
# 给出要转换的时区
converted_tz = pytz.timezone('US/Eastern')
# 在亚洲/加尔各答时区获取当前时间
datetime_object = datetime.now(original_tz)
# 使用strftime()对上面的datetime进行格式化
print("Original Date & Time: in Asia/Kolkata ",datetime_object.strftime(format))
# 在美国/东部时区获取当前时间
datetime_object = datetime.now(converted_tz )
# 使用strftime()对上面的datetime进行格式化
print("Converted Date & Time: in US/Eastern TimeZone ",datetime_object.strftime(format))
输出
执行上述程序将生成以下输出 –
Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400
结论
我们在本文中学习了如何在Python中转换具有不同时区的日期和时间。使用timedelta()函数获得时区对象。我们学习了如何使用datetime.now()函数获取当前日期和时间。我们还学习了如何使用strftime()函数格式化datetime对象。