Python 程序能用很多方式处理日期和时间,如time模块、datetime、calendar 模块可以用于格式化日期和时间
一、time模块
1、time.localtime() 返回本地时间元组
import time
t1 = time.localtime()
print(t1)
打印内容:
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=25, tm_hour=19, tm_min=48, tm_sec=42, tm_wday=4, tm_yday=360, tm_isdst=0)
元素 含义 取值
tm_year 年 4位数字,如2022
tm_mon 月 1~12,如2
tm_mday 日 1~31,如5
tm_hour 时 0~23,如7
tm_min 分 0~59,如50
tm_sec 秒 0~61(60或61是闰秒)
tm_wday 一周的第几日 0~6(0为周一,依此类推)
tm_yday 一年的第几日 1~366(366为儒略历)
tm_isdst 夏令时
1:是夏令时
0:非夏令时
-1:不确定
2、时间日期格式化输出
strftime()函数实现时间日期的格式化输出
import time
t1 = time.localtime()
t2=time.strftime("%Y-%m-%d %H:%M:%S", t1)
print(t2)
打印内容:
2020-12-25 19:51:30
Python中时间日期格式化符号如下:
格式 描述 实例
%y 年 两位表示(00-99)
%Y 年 四位表示(000-9999)
%m 月(数字01-12)
%b 月 简称 (如:Dec)
%B 月 完整名称 (如:December)
%d 日(数字0-31)
%H 时 24小时制(0-23)
%I 时 12小时制(01-12)
%p AM/PM
%M 分(00-59)
%S 秒(00-59)
%f 微妙(000000-999999)
%a 星期名简称(Wed)
%A 星期名完整称(Wednesday)
%w 星期(数字0-6),星期天为星期的开始
%W 周数,每周的第一天是周一(00-53)
%x 本地日期 (12/31/18)
%X 本地时间(17:41:00)
%z UTC 偏移
%Z 时区 CST
%c 本地相应的日期表示和时间表示 Mon Dec 31 17:41:00 2018
%j 年内的第几天(001-366)
%U 一年中的星期数(00-53)星期天为星期的开始
3、获取当前时间戳
t3 = time.time() 返回浮点数如:1675858691.0591984
t4=int(t3),将时间戳转为整型,如1675858691
4、读取当前时间并以易读方式表示,返回字符串
t5 = time.ctime() 返回如:Wed Feb 8 20:18:11 2023
5、设置等待时长
5.1、time.sleep() 线程推迟指定的时间运行 ,单位秒
如:>>> time.sleep(10)
5.2、若要生成一个固定范围内的随机等待时间,可以使用random.randint()
import random
import time
# 生成一个0到5之间的随机整数
wait_time = random.randint(0, 5)
time.sleep(wait_time) # 实际等待
5.3、如果想从多个指定的时间中随机选择一个作为等待时间,可以使用random.choices()
# 定义等待时间的列表
wait_times = [1, 2, 3, 5, 8, 13] # 示例等待时间列表
# 随机选择一个等待时间
random_wait_time = random.choice(wait_times)
6、将时间转为时间戳
import time
#获取当前时间,时间戳格式为浮点数
now=time.time()
print(now)
# 时间戳转为整型,去掉小数点部分
timestamp = int(now)
print(timestamp)
# 将指定时间转换为时间戳,strptime()将字符串对象转为时间日期对象,mktime()返回浮点数格式时间戳
time_str = '2022-01-01 12:00:00'
#strptime()将字符串解析为日期对象,其中参数1为要解析的日期字符串,参数2为日期字符串的格式
timestamp = int(time.mktime(time.strptime(time_str,'%Y-%m-%d %H:%M:%S'))) #%Y-%m-%d %H:%M:%S为time_str时间日期格式
print(timestamp)
如上时间戳为秒单位的时间戳,若要转为毫秒级时间戳只需要将秒级时间戳乘以 1000 即可,因为1秒等于1000ms
timestamp_ms=timestamp*1000
print(timestamp_ms)
二、datetime模块
1、获取当前日期和时间
from datetime import datetime
current_time= datetime.now()
print(current_time)
输出如下:
2024-12-19 19:29:55.454350
2、日期时间的格式化输出
from datetime import datetime
# 当前时间
current_time1= datetime.now() #当前时间未格式化输出
current_time2=current_time1.strftime("%Y-%m-%d %H:%M:%S") #当前时间格式化输出
# 格式化输出
print(current_time1)
print(current_time2)
输出如下:
2024-12-19 19:48:51.147493
2024-12-19 19:48:51
3、日期时间的运算(加/减)
以利用 timedelta 类,from datetime import timedelta
from datetime import datetime,timedelta
# 当前时间
current_time = datetime.now()
# 增加时间,注意此处加减先不要进行格式化输出,如果需要格式化输出,请在加减之后
time_to_add = timedelta(hours=2, minutes=30) # 调整增加时间:2小时30分钟
new_time = current_time + time_to_add # 调整后的时间
print("调整后的时间:", new_time) # 输出调整后的时间
# 减少时间,注意此处加减先不要进行格式化输出,如果需要格式化输出,请在加减之前
time_to_subtract = timedelta(hours=1, minutes=15) # 调整减少时间:1小时15分钟
new_time_subtracted = current_time - time_to_subtract # 调整后的时间
print("减少后的时间:", new_time_subtracted) # 输出减少后的时间
4、时间日期转时间戳
from datetime import datetime
# 当前时间
current_time1= datetime.now()
# 格式化输出
current_time2=current_time1.strftime("%Y-%m-%d %H:%M:%S")
#strptime()将字符串解析为日期对象,其中参数1为要解析的日期字符串,参数2为日期字符串的格式
current_time3 = datetime.strptime(current_time2, "%Y-%m-%d %H:%M:%S") #%Y-%m-%d %H:%M:%S为current_time2时间日期格式
#格式化日期转时间戳
current_time4=current_time3.timestamp()
#转为整型
current_time4=int(current_time4)
print(current_time4)
可定义一个时间转时间戳的函数:
import datetime
# 时间转时间戳,注意:参数time_str为字符串格式,可参考上面格式化一下
def time_to_timestamp(time_str):
dt = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
timestamp = int(dt.timestamp())
return timestamp
5、时间戳转时间日期
from datetime import datetime
# 当前时间
current_time1= 1734610186
# fromtimestamp()用于将时间戳转换为日期对象
current_time2=datetime.fromtimestamp(current_time1)
#时间日期格式化输出
current_time3 =current_time2.strftime("%Y-%m-%d %H:%M:%S")
print(current_time3)
也可定义一个时间戳转时间的函数:
# 时间戳转时间
def timestamp_to_time(timestamp):
dt = datetime.datetime.fromtimestamp(timestamp)
time_str = dt.strftime("%Y-%m-%d %H:%M:%S")
return time_str
三、Calendar模块
1、返回年日历或者月日历
import calendar
can1 = calendar.month(2023,2,w=2,l=1) #返回年份为2023,月份为2的月日历,默认3个月1行,月份间隔距离为c,月份中日间横向隔距离为w,纵向间隔距离为l
can2 = calendar.calendar(2023,c=6,w=2,l=1) #返回年份为year的年日历,默认3个月1行,月份间隔距离为c,月份中日间横向隔距离为w,纵向间隔距离为l
print(can1,can2)
can1返回内容:
can2返回内容: