如何在Python中将带有不同时区的日期和时间进行转换?

如何在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对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程