如何在 Python 中转换不同时区的日期和时间?
在本文中,我们将向您展示如何在 Python 中转换不同时区的日期和时间。
使用 astimezone() 函数
使用 datetime.now() 函数
在Python 日期和时间中,处理时区最简单的方法是使用pytz模块。此库允许进行准确的跨平台时区计算。pytz将 Olson tz 数据库引入 Python。它还解决了夏令时结束时出现的时间不明确问题,您可以在 Python 库参考 (datetime.tzinfo) 中了解更多信息。
在使用它之前,您需要使用以下方法安装它:
pip install pytz
方法 1:使用 astimezone() 函数
算法(步骤)
以下是执行所需任务需要遵循的算法/步骤:
使用import关键字导入datetime (用于处理日期和时间,Python 有一个名为 datetime 的模块)模块。
使用import关键字从pytz模块导入timezone 。
使用 input() 函数以字符串形式输入日期格式,并创建一个变量来存储它。
使用datetime.now() 函数(返回当前本地日期和时间)获取当前时间,并将其传递给 timezone()函数(获取特定位置的时区),并将其作为参数传递,例如 'UTC'。
使用strftime()格式化上述 DateTime 并打印它。
使用datetime.astimezone()函数(datetime.astimezone()函数用于修改 datetime 模块中 datetime 类的对象)将上述时间转换为另一个时区,并将新的时区作为参数传递给它。
使用strftime()格式化上述转换后的 DateTime 并打印它。
示例
以下程序在转换为另一个timezone后返回当前时间,使用astimezone()函数:
# importing datetime from datetime import datetime # importing timezone from pytz module from pytz import timezone # giving the format of datetime format = "%Y-%m-%d %H:%M:%S %Z%z" # getting the current time in UTC timezone now_utc = datetime.now(timezone('UTC')) # Format the above DateTime using the strftime() print('Current Time in UTC TimeZone:',now_utc.strftime(format)) # Converting to Asia/Kolkata time zone now_asia = now_utc.astimezone(timezone('Asia/Kolkata')) # Format the above datetime using the strftime() print('Current Time in Asia/Kolkata TimeZone:',now_asia.strftime(format))
输出
执行上述程序后,将生成以下输出:
Current Time in UTC TimeZone: 2022-09-07 04:23:21 UTC+0000 Current Time in Asia/Kolkata TimeZone: 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()函数(返回当前本地日期和时间)获取当前时间,并将上述第一个时区,即 asia/kolkata 时区对象作为参数传递给它(这里它将当前日期和时间转换为 asia/kolkata 时区)。
使用strftime()函数(根据格式代码返回表示 datetime 对象的字符串)格式化上述 datetime 对象并打印它。
strftime(format)
使用datetime.now()函数获取当前时间,并将上述第二个时区,即 'US/Eastern' 时区作为参数传递给它(这里它将当前日期和时间转换为 'US/Eastern' 时区)。
使用 strftime() 函数格式化上述 datetime 对象并打印它。
示例
以下程序在转换为另一个timezone后返回当前时间,使用astimezone()函数:
# importing datetime from datetime import datetime # importing pytz module import pytz # giving the format of datetime format = "%Y-%m-%d %H:%M:%S %Z%z" # getting the standard UTC time original_tz = pytz.timezone('Asia/Kolkata') # giving the timezone to which it is to be converted converted_tz = pytz.timezone('US/Eastern') # Getting the current time in the Asia/Kolkata Time Zone datetime_object = datetime.now(original_tz) # Format the above datetime using the strftime() print("Original Date & Time: in Asia/Kolkata ",datetime_object.strftime(format)) # Getting the current time in the US/Eastern Time Zone datetime_object = datetime.now(converted_tz ) # Format the above datetime using the strftime() 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 对象。