使用前先导入time模块:import time
time.time() 表示当前时间的时间戳
import time
print(time.time())
>> 1668412187.3410442
time.localtime() 将时间戳转化为当前时区的struct_time,可以通过索引或者成员符号取相关值
local_time = time.localtime(time.time())
print('转化时间戳为本地时间:{}'.format(local_time))
print('年份为:{}'.format(local_time[0]))
print('月份为:{}'.format(local_time.tm_mon))
print('当前的本地时间:{}'.format(time.localtime())) # 不加时间戳参数则打印当前时间
>> 转化时间戳为本地时间:time.struct_time(tm_year=2022, tm_mon=11, tm_mday=14, tm_hour=15, tm_min=49, tm_sec=47, tm_wday=0, tm_yday=318, tm_isdst=0)
>> 年份为:2022
>> 月份为:11
>> 当前的本地时间:time.struct_time(tm_year=2022, tm_mon=11, tm_mday=14, tm_hour=15, tm_min=49, tm_sec=47, tm_wday=0, tm_yday=318, tm_isdst=0)
time.gmtime() 将时间戳转换为UTC时区的struct_time
print('转化时间戳为utc时间:{}'.format(time.gmtime(time.time())))
print('当前的utc时间:{}'.format(time.gmtime())) # 不加时间戳参数则打印当前utc时间
>> 转化时间戳为utc时间:time.struct_time(tm_year=2022, tm_mon=11, tm_mday=14, tm_hour=7, tm_min=49, tm_sec=47, tm_wday=0, tm_yday=318, tm_isdst=0)
>> 当前的utc时间:time.struct_time(tm_year=2022, tm_mon=11, tm_mday=14, tm_hour=7, tm_min=49, tm_sec=47, tm_wday=0, tm_yday=318, tm_isdst=0)
time.mktime() 将struct_time转换成时间戳
print(time.mktime(local_time))
>> 1668412187.0
time.sleep() 线程睡眠指定时间,单位为秒
time.sleep(5)
time.asctime() 表示时间的元组或者将struct_time表示为 Mon Nov 14 11:38:57 2022 这种形式
print(time.asctime())
print(time.asctime(time.localtime(time.time())))
>> Mon Nov 14 15:49:47 2022
>> Mon Nov 14 15:49:47 2022
time.ctime() 表示时间的元组或者将时间戳转化为 Mon Nov 14 11:38:57 2022 这种形式
print(time.ctime())
print(time.ctime(time.time()))
>> Mon Nov 14 15:49:47 2022
>> Mon Nov 14 15:49:47 2022
time.strftime( format [, t] ) 代表时间的元组或者struct_time转化为格式化的时间字符串,格式由参数format决定
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
print(time.strftime('%Y-%m-%d %H:%M:%S'))
>> 2022-11-14 15:49:47
>> 2022-11-14 15:49:47
其中format为时间字符串的格式化样式,t为struct_time形式的参数,format格式如下:
datetime模块中常用的类是:
datetime.date:表示日期的类,主要用于处理年、月、日;
datetime.time:表示时间的类,主要用于处理时、分、秒;
datetime.datetime:表示日期时间的类,date类和time类的综合使用,可以处理年、月、日、时、分、秒;
datetime.timedelta:表示日期时间的类,date类和time类的综合使用,可以处理年、月、日、时、分、秒;
1)date()
date()是date类的构造函数。构造函数有三个参数:年、月和日,返回格式为year-month-day
print(datetime.date(2022, 11, 14))
>> 2022-11-14
2) today()
使用今天的日期构造对象,无参数,返回今天的日期;还可以打印对象对应的年、月、日属性
d = datetime.date.today()
print(d)
print("当前年:{}".format(d.year))
print("当前月:{}".format(d.month))
print("当前日:{}".format(d.day))
>> 2022-11-14
>> 当前年:2022
>> 当前月:11
>> 当前日:14
3) fromtimestamp(t)
使用时间戳创建日期对象,传入时间戳参数,返回时间戳对应的日期
print(datetime.date.fromtimestamp(1668416624.0285492))
>> 2022-11-14
1)、静态方法和属性
time.min:time类所能表示的最小时间
time.max:time类所能表示的最大时间
time.resolution:time类表示时间的最小单位 1微秒
print(datetime.time.min)
print(datetime.time.max)
print(datetime.time.resolution)
>> 00:00:00
>> 23:59:59.999999
>> 0:00:00.000001
2)其他常用方法和属性:通过time对象才能调用
# 先构造一个time对象
t = datetime.time(17, 35, 11)
print(t)
# 分别打印t.hour、t.minute、t.second、t.microsecond:时、分、秒、微秒 属性
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)
>> 17:35:11
>> 17
>> 35
>> 11
>> 0
# 没有传递微秒参数。因此,将打印其默认值0
# 方法
# t.replace(hour=,minute=,second=,microsecond=), 生成一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性。(原有对象仍保持不变)
print(t.replace(hour=18))
>> 18:35:11
# t.isoformat() 返回型如"HH:MM:SS"格式的字符串时间表示
print(t.isoformat())
>> 17:35:11
# t.strftime(format):传入任意格式符,可以输出任意格式的时间表示形式
print(t.strftime('%H-%M-%M'))
>> 17-35-35
1) datetime 对象
datetime模块有一个名为的dateclass类,可以包含来自date和time对象的信息
datetime()构造函数中的前三个参数year、month和day是必需的
import datetime
# datetime(year, month, day)
print(datetime.datetime(2022, 11, 14))
# datetime(year, month, day, hour, minute, second, microsecond)
t = datetime.datetime(2022, 11, 14, 23, 55, 59, 342380)
print(t)
>> 2022-11-14 00:00:00
>> 2022-11-14 23:55:59.342380
# 打印属性
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.microsecond)
print(t.timestamp()) # 打印时间戳
>> 2022
>> 11
>> 14
>> 23
>> 55
>> 342380
>> 1668441359.34238
2) datetime.now()
# 获取当前的日期,年月份
print(datetime.datetime.now().date())
>> 2022-11-14
# 获取每个时间的序列
print(datetime.datetime.now().timetuple())
>> time.struct_time(tm_year=2022, tm_mon=11, tm_mday=14, tm_hour=18, tm_min=2, tm_sec=20, tm_wday=0, tm_yday=318, tm_isdst=-1)
# 获取月份(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
print(datetime.datetime.now().timetuple().tm_mon)
>> 11
# 时间类型转为字符串类型
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
>> 2022-11-14 18:19:20
# 在我们现在的日期里面加入2天,最后打印出来,这里要注意,模块的使用,有优先级的混淆
print(datetime.datetime.now().date() + datetime.timedelta(days=2))
>> 2022-11-16
# 在现在的时间里面向后推迟2个小时
print(datetime.datetime.now()+datetime.timedelta(hours=2))
>> 2022-11-14 20:02:20.085866
timedelta对象表示两个日期或时间之间的时差
# 创建了两个timedelta对象t1和t2,打印相差的时间
t1 = datetime.timedelta(weeks=2, days=5, hours=1, seconds=33)
t2 = datetime.timedelta(days=4, hours=11, minutes=4, seconds=54)
t3 = t1 - t2
print(t3)
>> 14 days, 13:55:39
t1 = datetime.timedelta(seconds = 33)
t2 = datetime.timedelta(seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
>> t3 = -1 day, 23:59:39
# 使用total_seconds()方法获得timedelta对象中的总秒数
t = datetime.timedelta(days=5, hours=1, seconds=33, microseconds=233423)
print("total seconds =", t.total_seconds())
>> total seconds = 435633.233423
# 求出上一个月的最后一天日期,就用这个月的第一天减1天,这个里面的参数可以改动,默认为月份初始化天
f=datetime.date(day=1, month=datetime.date.today().month, year=datetime.date.today().year) - datetime.timedelta(days=1)
print(f)
>> 2022-10-31
1)strftime()-字符串的日期时间对象
strftime()方法是在date、datetime和time类下面定义的。该方法根据给定的日期、日期时间或时间对象创建格式化的字符串。
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
print(datetime.date.today().strftime("%b %d %Y"))
print(datetime.time(18, 48, 32).strftime('%H-%M-%S'))
>> 2022-11-14 18:51:41
>> Nov 14 2022
>> 18-48-32
2) strptime()-将字符串类型转为时间类型
date_string = "14 Nov, 2022"
date_object = datetime.datetime.strptime(date_string, "%d %b, %Y")
print(date_object)
print(type(date_object))
>> 2022-11-14 00:00:00
>>