datetime
Python的datetime模块提供了一个简单而强大的方式来处理日期和时间。这个模块定义了一系列类,用于表示日期(date)、时间(time)、时间差(timedelta)、以及日期和时间(datetime)。此外,它还包含了一些函数和常量,用于处理时区信息和时间格式转换。
datetime类
datetime类是最常用的类之一,它结合了日期和时间。你可以通过传递年、月、日、时、分、秒和微秒(可选)来创建一个datetime对象。
from datetime import datetime
# 创建一个datetime对象
now = datetime(2023, 4, 1, 12, 0, 0)
print(now) # 输出: 2023-04-01 12:00:00
date类
date类用于表示日期(年、月、日)。你可以通过datetime.date()或直接从date类创建date对象。
from datetime import date
# 创建一个date对象
today = date(2023, 4, 1)
print(today) # 输出: 2023-04-01
time类
time类用于表示时间(时、分、秒、微秒)。它通常与date或datetime对象一起使用,但也可以单独使用。
from datetime import time
# 创建一个time对象
noon = time(12, 0, 0)
print(noon) # 输出: 12:00:00
timedelta类
timedelta类用于表示两个日期或时间之间的差异。你可以通过传递天数、秒数和微秒数(可选)来创建一个timedelta对象。
from datetime import timedelta
# 创建一个timedelta对象
one_day = timedelta(days=1)
print(one_day) # 输出: 1 day, 0:00:00
时间戳
datetime模块还允许你将datetime对象转换为时间戳(自1970年1月1日以来的秒数)以及将时间戳转换回datetime对象。
from datetime import datetime
# 获取当前时间的时间戳
timestamp = datetime.now().timestamp()
print(timestamp) # 输出一个浮点数,表示当前时间的时间戳
# 将时间戳转换回datetime对象
dt_object = datetime.fromtimestamp(timestamp)
print(dt_object) # 输出与当前时间相同的datetime对象
字符串与时间对象的转换
datetime模块提供了strptime和strftime方法,用于将字符串转换为时间对象以及将时间对象转换为字符串。strftime方法接受一个格式字符串,并根据该字符串的指令返回一个新的字符串。strptime方法则相反,它将一个字符串解析为一个datetime对象。
from datetime import datetime
# 字符串转换为datetime对象
dt_string = "2023-04-01 12:00:00"
dt_object = datetime.strptime(dt_string, "%Y-%m-%d %H:%M:%S")
print(dt_object) # 输出: 2023-04-01 12:00:00
# datetime对象转换为字符串
formatted_string = dt_object.strftime("%d/%m/%Y %H:%M:%S")
print(formatted_string) # 输出: 01/04/2023 12:00:00
时区支持
虽然datetime模块本身不直接支持时区,但Python 3.2及更高版本引入了pytz库(需要单独安装),它可以与datetime模块一起使用来处理时区信息。
import pytz
from datetime import datetime
# 设置时区
tz = pytz.timezone('Asia/Shanghai')
# 创建一个带时区的datetime对象
aware_dt = tz.localize(datetime(2023, 4, 1, 12, 0, 0))
print(aware_dt) # 输出: 2023-04-01 12:00:00+08:00