时间主要分为3个模块:
time模块,datetime模块,calendar模块
1、time模块 和 datetime模块
import time, datetime #获取当前时间,并把它转换为字符串 # 方法一: >>> time <module 'time' (built-in)> >>> type(time) <class 'module'> >>> time.strftime('%Y-%m-%d %H:%M:%S') '2019-06-26 23:59:41' # 方法二: >>> now = datetime.datetime.now() >>> now datetime.datetime(2019, 6, 27, 0, 1, 8, 464662) >>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') '2019-06-27 00:04:26' # 字符串转时间 datetime.datetime.strptime('2018-6-10 13:59:50','%Y-%m-%d %H:%M:%S') #字符串转换为时间 time.strptime('2019-7-25 13:42:33', '%Y-%m-%d %H:%M:%S') # 时间转字符串 .strftime() >>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') '2019-06-06 00:04:26' >>> b = time.strptime('2019-08-05', '%Y-%m-%d') >>> time.strftime('%Y-%m-%d', b) '2019-08-05' #获取当前时间戳,以秒为单位 >>> int(time.time()) # 这是获取的系统时间(也叫墙上时间) 1561565381 >>> time.clock() # 这是获取的CPU运行时间(统计某一程序或者函数的执行时间最为合适) 3e-07 >>> t1 = time.clock() >>> t2 = time.clock() >>> t2-t1 11.4080048 # 时间戳转为时间 # 方法一 datetime.datetime.fromtimestamp() >>> datetime.datetime.fromtimestamp(int(time.time())) datetime.datetime(2019, 6, 27, 0, 12, 11) >>> datetime.datetime.fromtimestamp(int(time.time())).strftime('%Y-%m-%d %H:%M:%S') # 转为字符串 '2019-06-06 00:17:47 # 方法二:time.localtime() >>> time.localtime(int(time.time())) time.struct_time(tm_year=2019, tm_mon=6, tm_mday=27, tm_hour=0, tm_min=13, tm_sec=55, tm_wday=3, tm_yday=178, tm_isdst=0) >>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(time.time()))) # 转为字符串 '2019-06-27 00:19:32' >>> time.localtime() time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=21, tm_min=39, tm_sec=11, tm_wday=2, tm_yday=331, tm_isdst=0) >>> time.localtime()[0] # 年 2019 >>> time.localtime()[1] # 月 11 >>> time.localtime()[2] # 日 27 >>> time.localtime()[3] # 时 21 >>> time.localtime()[4] # 分 41 >>> time.localtime()[5] # 秒 30 >>> time.localtime()[6] # 星期几 (结果+1) 2 >>> time.localtime()[7] # 一年中的第几天 331 >>> time.localtime()[8] # 是否夏令时 0 now = time.localtime() time.strftime('%Y-%m-%d %H:%M:%S', now) '2019-11-29 09:52:59' #星期的简写 time.strftime('%a', now) 'Fri' #星期的全写 time.strftime('%A', now) 'Friday' #月份的简写 time.strftime('%b', now) 'Nov' #月份的全写 time.strftime('%B', now) 'November' #得到日期时间的字符串 time.strftime('%c', now) 'Fri Nov 29 09:52:59 2019' #日期字符串 time.strftime('%x', now) '11/29/19' #时间字符串 time.strftime('%X', now) '09:52:59' # 今天在这周是星期几 time.strftime('%w', now) '5' #今天是今年的第几天 time.strftime('%j', now) '333' #这周是今年的第几周 time.strftime('%U', now) '47' # 生产一个日期,年月日 时分秒 t = time.localtime() str(t[0])+"年"+str(t[1])+"月"+str(t[2])+"日"+" " + str(t[3])+"时"+ str(t[4])+"分"+ str(t[5])+"秒" '2019年11月27日 21时51分35秒' 万能拼接:" %Y-%m-%d %H:%M:%S " 最好用这种方法拼接,因为这样拼接后的日期长度的固定的,便于截取 %y # 两位数的年份表示(00-99) %Y # 四位数的年份表示(000-9999) %m # 月份(01-12) %d # 月内中的一天(0-31) %H # 24小时制小时数(0-23) %I # 12小时制小时数(01-12) %M # 分钟数(00=59) %S # 秒(00-59) import datetime # date类 >>> datetime.date.max # 最大日期 datetime.date(9999, 12, 31) >>> datetime.date.min # 最小日期 datetime.date(1, 1, 1) >>> print(datetime.date.today()) # 当前日期 2020-03-18 # 时间戳转换时间 >>> now = time.time() >>> print(datetime.date.fromtimestamp(now)) 2020-03-18 # 时间转换为星期几 >>> now2 = datetime.date.today() >>> datetime.date.weekday(now2) 2 # 时间计算 # 加天数和减天数 >>> today = datetime.date.today() >>> print(today) 2020-03-18 >>> print (today + datetime.timedelta(days = 10)) 2020-03-28 >>> print (today - datetime.timedelta(days = 10)) 2020-03-08 # 两个时间之间的加减 >>> time1 = datetime.date.today() # 时间1 >>> print(time1) 2020-03-18 >>> time2 = time1.replace(day=20) # 时间2(替换生产新的时间) >>> print(time2) 2020-03-20 >>> print(time2 - time1) 2 days, 0:00:00 # 时间日期大小比较 >>> time1 = datetime.date.today() # 时间1 >>> print(time1) 2020-03-18 >>> time2 = time1.replace(day=20) # 时间2(替换生产新的时间) >>> print(time2) 2020-03-20 >>> time1<time2 True
2、calendar模块
# calendar模块,就是日历模块,提供了一些操作日期、生成日历的方法 >>> for i in calendar.day_name: # 获取全写星期 ... print(i, end=" ") ... Monday Tuesday Wednesday Thursday Friday Saturday Sunday >>> for i in calendar.day_abbr: # 获取简写星期 ... print(i,end=" ") ... Mon Tue Wed Thu Fri Sat Sun >>> for i in calendar.month_name: # 获取全写的月份 ... print(i, end=" ") ... January February March April May June July August September October November December >>> for i in calendar.month_abbr: # 获取月份的简写 ... print(i, end=" ") ... Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec >>> calendar.isleap(2015) # 判断是否是闰年 False >>> print (calendar.month(2015, 3, 1, 1)) # 获取月份的日历, 参数为:年、月、横向间距、纵向间距 March 2015 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 >>> print (calendar.calendar(2015, 3, 1, 1)) # 获取年的日历,参数:年、一行排3个月份、横向间距、纵向间距 2015 January February March Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 1 1 5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8 12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15 19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22 26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29 30 31 April May June Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 27 28 29 30 25 26 27 28 29 30 31 29 30 July August September Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 1 2 1 2 3 4 5 6 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13 13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20 20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27 27 28 29 30 31 24 25 26 27 28 29 30 28 29 30 31 October November December Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 1 1 2 3 4 5 6 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 30 myCal = calendar.HTMLCalendar(calendar.SUNDAY) # 生成html的格式 print (myCal.formatmonth(2016, 7)) with open('calendar.html','w') as fp: fp.write(myCal.formatmonth(2016, 7))