在Python中,处理日期和时间的常用库有内置的 datetime 和第三方库 pytz、dateutil。支持获取当前日期和时间,支持创建特定的日期和时间,使用pytz处理时区,倒计时计算,工作日判断,时间戳操作等。
一、 内置 datetime 模块
基本操作
fromdatetime import datetime, date, time, timedelta# 获取当前日期和时间now= datetime.now()print("当前时间:", now) # 输出:2025-06-1314:30:00.123456# 获取当前日期today= date.today()print("当前日期:", today) # 输出:2025-06-13# 创建自定义日期/时间custom_date= date(2025,7,15)custom_time= time(12,30,15)custom_datetime= datetime(2025,7,15,12,30,15)# 日期时间格式化formatted= now.strftime("%Y-%m-%d %H:%M:%S")print("格式化时间:", formatted) # 输出:2025-06-1314:30:00# 字符串转日期date_str="2025-08-20 08:30:00"parsed_date= datetime.strptime(date_str,"%Y-%m-%d %H:%M:%S")print("解析后的时间:", parsed_date)# 日期运算(加减)tomorrow= now + timedelta(days=1)last_week= now - timedelta(weeks=1)print("明天:", tomorrow)print("上周:", last_week)# 计算日期差date1= datetime(2025,5,10)date2= datetime(2025,6,10)delta= date2 - date1print("相差天数:", delta.days) # 输出:31
二、处理时区 (pytz)
importpytzfromdatetimeimportdatetime# 获取UTC时间utc_now = datetime.now(pytz.utc)print("UTC时间:", utc_now)# 转换时区# 定义时区对象tz_shanghai = pytz.timezone("Asia/Shanghai")tz_ny = pytz.timezone("America/New_York")# 本地时间 -> 带时区local_time = datetime.now()shanghai_time = tz_shanghai.localize(local_time)print("上海时间:", shanghai_time)# 时区转换ny_time = shanghai_time.astimezone(tz_ny)print("纽约时间:", ny_time)# 所有可用时区print("所有时区:", pytz.all_timezones[:5])# 输出前5个
三、灵活解析日期 (dateutil)
fromdateutil import parser# 自动解析各种日期字符串date_str1="June 13, 2025"date_str2="15/07/2025 14:30"date_str3="20250715"dt1= parser.parse(date_str1)dt2= parser.parse(date_str2)dt3= parser.parse(date_str3)print("解析结果1:", dt1) #2025-06-1300:00:00print("解析结果2:", dt2) #2025-07-1514:30:00print("解析结果3:", dt3) #2025-07-1500:00:00
四、 时间戳操作
importtimefromdatetimeimportdatetime# 获取当前时间戳(秒级)timestamp = time.time()print("时间戳:", timestamp)# 输出: 176543210.123# 时间戳转datetimedt_from_timestamp = datetime.fromtimestamp(timestamp)print("时间戳转日期:", dt_from_timestamp)# datetime转时间戳timestamp_new = dt_from_timestamp.timestamp()print("日期转时间戳:", timestamp_new)