📜  在Python中添加日期和时间

📅  最后修改于: 2022-05-13 01:55:20.117000             🧑  作者: Mango

在Python中添加日期和时间

先决条件: Python – datetime.tzinfo()

Python支持 datetime 模块来执行日期和时间的操作。 Datetime 模块允许用户执行各种与日期和时间相关的算术运算,提取各种时间范围并以不同格式格式化输出。这些类型的对象是不可变的。可以使用以下命令将该模块导入Python工作区:

import datetime

datetime 对象还支持一个额外的时区属性,这是可选的。可以将此属性分配给 tzinfo 类的子类的实例。 tzinfo 对象类可以满足以下需求,即捕获与 UTC 时间的固定偏移量的信息,即 UTC 本身或北美 EST 和 EDT 时区,相应时区的名称,以及如果夏令时目前有效。 tzinfo 是一个抽象基类。 tzinfo 的任何任意具体子类都可能需要实现自己的方法。时区的偏移量是指时区与协调世界时 (UTC) 相差多少小时。

使用 tzinfo 确定日期时间对象的类型

有两种对象,naive 和aware,如果对象不包含任何时区信息,那么datetime 对象是naive 的,否则是aware 的。对于原始对象,tzinfo 返回 None。

Python3
# importing required module
import datetime
  
# create object
datetime_obj = datetime.datetime.now()
  
print(datetime_obj.tzinfo)


Python3
# importing the required modules
import datetime
import pytz
  
# instantiate datetime object
obj = datetime.datetime.now()
  
# specifying the timezone using pytz library
tzone = pytz.timezone("America/Los_Angeles")
  
# localizing the datetime object
datetime_obj = tzone.localize(obj)
  
# extracting time zone info of the object
print(datetime_obj.tzinfo)


Python3
# importing required modules
from datetime import datetime
import pytz
  
# creating a datetime object
curr_datetime = datetime.now()
print("Current timezone")
print(curr_datetime)
  
# creating timezone using pytz package
changed_timezone = pytz.timezone('US/Pacific')
  
# replacing timezone using the specified timezone value
curr_datetime = curr_datetime.replace(tzinfo=changed_timezone)
curr_datetime = curr_datetime.astimezone(changed_timezone)
print("Replaced timezone")
print(curr_datetime)


输出:

None

如果我们需要使用感知日期时间对象,可以明确指定时区。 pytz 库可用于本地化创建的 datetime 对象,该对象提供有关创建的时区的信息。 Naive datetime 和aware datetime 对象不能比较,否则会抛出错误。

蟒蛇3

# importing the required modules
import datetime
import pytz
  
# instantiate datetime object
obj = datetime.datetime.now()
  
# specifying the timezone using pytz library
tzone = pytz.timezone("America/Los_Angeles")
  
# localizing the datetime object
datetime_obj = tzone.localize(obj)
  
# extracting time zone info of the object
print(datetime_obj.tzinfo)

输出:

America/Los_Angeles

替换日期时间对象的时区

使用 datetime.now() 对象实例化一个简单的时区对象。可以使用 pytz.timezone() 模块显式指定新时区。然后进一步使用指定的时区。在 datetime 对象上调用 replace 方法,并将 tzinfo 参数设置为替换的时区值。然后使用 astimezone() 方法对原始时区对象提取此值,并将更改的时区作为其参数。

蟒蛇3

# importing required modules
from datetime import datetime
import pytz
  
# creating a datetime object
curr_datetime = datetime.now()
print("Current timezone")
print(curr_datetime)
  
# creating timezone using pytz package
changed_timezone = pytz.timezone('US/Pacific')
  
# replacing timezone using the specified timezone value
curr_datetime = curr_datetime.replace(tzinfo=changed_timezone)
curr_datetime = curr_datetime.astimezone(changed_timezone)
print("Replaced timezone")
print(curr_datetime)

输出:

Current timezone
2021-02-12 20:20:50.668454
Replaced timezone
2021-02-12 20:20:50.668454-07:53