Python中有一个内置的模块叫做datetime,它可以用来处理日期和时间相关的数据。datetime模块中有几个常用的类,如date, time, datetime, timedelta, tzinfo等。这些类可以用来表示日期,时间,日期时间,时间间隔,时区等信息。
date类用来表示一个日期,它包含年,月,日三个属性。例如,要创建一个表示2023年9月26日的date对象,可以这样写:
from datetime import date
d = date(2023, 9, 26)
print(d) # 输出 2023-09-26
time类用来表示一个时间,它包含时,分,秒,微秒四个属性。例如,要创建一个表示9点50分1秒的time对象,可以这样写:
from datetime import time
t = time(9, 50, 1)
print(t) # 输出 09:50:01
datetime类是date和time的结合体,它包含年,月,日,时,分,秒,微秒七个属性。例如,要创建一个表示2023年9月26日9点50分1秒的datetime对象,可以这样写:
from datetime import datetime
dt = datetime(2023, 9, 26, 9, 50, 1)
print(dt) # 输出 2023-09-26 09:50:01
timedelta类用来表示两个datetime对象之间的时间差。它包含天,秒,微秒三个属性。例如,要计算两个datetime对象之间相差多少天,可以这样写:
from datetime import datetime, timedelta
dt1 = datetime(2023, 9, 26, 9, 50, 1)
dt2 = datetime(2023, 10, 1, 10, 0, 0)
delta = dt2 - dt1 # 得到一个timedelta对象
print(delta.days) # 输出 5
tzinfo类是一个抽象基类,用来表示时区信息。它有一个方法utcoffset(),用来返回与UTC时间的偏移量。要使用具体的时区信息,可以使用第三方库pytz。例如,要获取北京时间和纽约时间的当前日期和时间,并转换为UTC时间1,可以这样写:
from datetime import datetime
import pytz
# 创建北京时区和纽约时区的对象
beijing_tz = pytz.timezone('Asia/Shanghai')
newyork_tz = pytz.timezone('America/New_York')
# 获取北京时间和纽约时间的当前日期和时间,并添加时区信息
beijing_dt = datetime.now(beijing_tz)
newyork_dt = datetime.now(newyork_tz)
# 转换为UTC时间
beijing_utc = beijing_dt.astimezone(pytz.utc)
newyork_utc = newyork_dt.astimezone(pytz.utc)
# 打印结果
print(beijing_dt) # 输出 2023-09-26 17:50:01.123456+08:00
print(newyork_dt) # 输出 2023-09-26 05:50:01.123456-04:00
print(beijing_utc) # 输出 2023-09-26 09:50:01.123456+00:00
print(newyork_utc) # 输出 2023-09-26 09:50:01.123456+00:00