datetime模块 、calendar、time
一、datetime模块
datetime模块其实是对time模块的包装,提供了更高级的API
import datetime # datetime类: # 方法一:指定一个日期和时间 dt = datetime.datetime(2020, 10, 28, 5, 29) print(dt) # 2020-10-28 05:29:00 # 方法二 根据时间戳创建 dt = datetime.datetime.fromtimestamp(1333333333) print(dt) # 2012-04-02 10:22:13 # 方法三:今天,现在,如果now()不指定参数的话,跟today是一样的。 dt = datetime.datetime.today() # 2020-10-28 05:34:26.415294 今天 dt = datetime.datetime.now() # 现在,跟today()的区别:today()不接受任何参数,now()可以接受一个tzinfo(日期)参数 print(dt.date(), type(dt.date())) # 2020-10-28 <class 'datetime.date'> print(dt.time(), type(dt.time())) # 07:18:09.430138 <class 'datetime.time'> print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond) # datetime类属性 print('星期:', dt.weekday()) # datetime类方法。星期: 2, 相当于星期三,你懂的 # ---------------------------------------------------------------------------------------------------------- # date类 dt = datetime.date(2020, 10, 28) dt = datetime.date.today() # dt = datetime.date.now() 没有now() dt = datetime.date.fromtimestamp(1333333333) print(dt.year, dt.month, dt.day) # date类属性 print('星期:', dt.weekday()) # date类方法 星期: 0, 相当于星期一,你懂的 # ------------------------------------------------------------------ # time类,只能用构造方法创建 dt = datetime.time() dt = datetime.time(6, 2, 59, 999999) print(dt.hour, dt.minute, dt.second, dt.microsecond) # time类属性 # ------------------------------------------------------------------------------------------------------------ # timedelta类 时间跨度 # def __init__(self, days: float = ..., seconds: float = ..., microseconds: float = ..., # milliseconds: float = ..., minutes: float = ..., hours: float = ..., # weeks: float = ..., *, fold: int = ...) -> None: ... td = datetime.timedelta(10) print(datetime.date.today()+td) td = datetime.datetime.today()-datetime.datetime(2018, 9, 10, 23, 59, 59) print(type(td)) # <class 'datetime.timedelta'> print(td) # 778 days, 6:19:11.499996 print(td.days) # 778 print(td.seconds) # 22873 print(td.microseconds) # 488769 print(td.total_seconds()) # td.days*24*3600+td.seconds+td.microseconds # 如果要获得小时,分钟,周,需要自己换算。 # ----------------------------------------------------------------------------------------------------------- # 格式化时间strftime(对象方法) 和解析时间strptime(类方法) 注意区别:f和p # strftime(对象方法):格式化时间 dt = datetime.datetime.today() print(dt.strftime('%Y年%m月%d日 %H点%M分%S秒')) # 2020年10月28日 07点05分56秒 dt = datetime.date.today() print(dt.strftime('%Y年%m月%d日 %H点%M分%S秒')) # 2020年10月28日 00点00分00秒 dt = datetime.time(7, 10, 59) print(dt.strftime('%H点%M分%S秒')) # 07点10分59秒 # strptime(类方法):解析时间 dt = datetime.datetime.strptime('2020年10月28日 07点05分56秒', '%Y年%m月%d日 %H点%M分%S秒') print(dt, type(dt)) # 2020-10-28 07:05:56 <class 'datetime.datetime'> # 说明:date和time类没有strptime()方法。
二、calendar
import calendar # 1、打印日历 # calendar.setfirstweekday(firstweekday=0) # 设置第一天是星期一 默认就是星期一 print(calendar.month(2020, 10)) # October 2020 # Mo Tu We Th Fr Sa Su # 1 2 3 4 # 5 6 7 8 9 10 11 # 12 13 14 15 16 17 18 # 19 20 21 22 23 24 25 # 26 27 28 29 30 31 # 2、计算每个月天数 monthRange = calendar.monthrange(2020, 10) print(monthRange) # (3, 31) # 输出的是一个元组,第一个元素是所查月份的第一天对应的是星期几(0-6),第二个元素是这个月的天数。 # 以上实例输出的意思为 2020 年 10 月份的第一天是星期四,该月总共有 31 天 print(calendar.mdays[10]) # 31
三、time 做一个计时器
import time starttime = time.time() print('开始') while True: print('计时: ', round(time.time() - starttime, 0), '秒') time.sleep(1)
由于datetime模块对time模块进行了包装,所以,time模块只需要掌握上面两个方法即可,下面的只是参考
import time a1 = "2019-5-10 23:40:00" # 先转换为时间数组 timeArray = time.strptime(a1, "%Y-%m-%d %H:%M:%S") print(timeArray) # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=130, tm_isdst=-1) # 转换为时间戳 timeStamp = int(time.mktime(timeArray)) print(timeStamp) # 1557502800 # 格式转换 - 转为 / a2 = "2019/5/10 23:40:00" # 先转换为时间数组,然后转换为其他格式 timeArray = time.strptime(a2, "%Y/%m/%d %H:%M:%S") otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray) print(otherStyleTime) # 2019/05/10 23:40:00

浙公网安备 33010602011771号