day5-time&datetime模块
概述
我们的程序在运行中时,通常会进行日志的记录,而日志记录的同时会有具体的时间,方便我们对程序的运行状况进行监控,那么,今天我们来说说time&datetime模块
time模块
>>> help(time) #获取时间帮助 The tuple items are: year (including century, e.g. 1998) month (1-12) day (1-31) hours (0-23) minutes (0-59) seconds (0-59) weekday (0-6, Monday is 0) Julian day (day in the year, 1-366) DST (Daylight Savings Time) flag (-1, 0 or 1)
1.time.time()
用法:返回当前时间的时间戳
>>> import time >>> time.time() 1499532751.878138 >>> import time >>> time.timezone #UTC和本地标准时间的差多少秒 -28800 >>> 28800/3600 #秒转换成小时 8.0 #中国在东8区,中国比世界时间早8小时 >>> time.daylight #有无使用夏令时 0 >> time.sleep(3) #睡几秒
2.time.gmtime()
用法:
1.返回当前UTC时间(伦敦时间)
2.时间戳转换到到结构化时间(元组)UTC时区,默认将本地时间秒数传进去
>>> time.gmtime() #时间戳转换到到结构化时间(元组)UTC时区,默认将本地时间秒数传进去 time.struct_time(tm_year=2017, tm_mon=7, tm_mday=12, tm_hour=12,tm_min=5, tm_sec=11, tm_wday=2, tm_yday=193, tm_isdst=0)
3.time.localtime()
用法:
1.返回本地时间的struct_time的格式对象
2.时间戳转换到到结构化时间(元组)本地时区,默认将本地时间秒数传进去
localtime: # 语法格式 >>> localtime([seconds]) ->(tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst) >>> time.localtime() time.struct_time(tm_year=2017, tm_mon=7, tm_mday=9, tm_hour=0,tm_min=53, tm_sec=46, tm_wday=6, tm_yday=190, tm_isdst=0) #dst时区(是否是夏令时,0-非夏令时) >>> time.localtime(1111111111) #1111111111/3600/24/365 =35.233102200659566 ,1970+35= 2005 time.struct_time(tm_year=2005, tm_mon=3, tm_mday=18, tm_hour=9, tm_min=58, tm_sec=31, tm_wday=4, tm_yday=77, tm_isdst=0) # 那么我们如何将元组中的数据取出来: import time time.time() x=time.localtime() print("this is year:",x.tm_year) #输出 this is year:2017
4.time.mktime
用法:将本地时间本地时区(元组)转换为时间戳
>>>import time
>>> x = time.localtime()
>>>mktime(x)
1499862652.0
5.time.strftime()
用法:将struct_time元组格式转换成字符串格式
>>> strftime(format[, tuple]) -> string #语法格式 %Y 完整年份. %m 月份 [01,12]. %d 一个月中的第几天 [01,31]. %H 一天中的第几个小时 [00,23]. %M 分钟 [00,59]. %S 秒 [00,61]. %z UTC的偏移时区. %a 本地简化的星期名称. %A 本地完整的星期名称. %b 本地简化月份名称. %B 本地完整月份名称. %c 本地相应的日期和时间表示. %I 第几个小时 [01,12]. %p 本地am或者pm. >>> time.strftime("%Y-%m-%d %H:%M:%S") #组合参数 '2017-07-12 20:36:10' import time x=time.localtime(1111111111) #x为元组格式 print(time.strftime("%Y-%m-%d%H:%M:%S",x)) #x为元组格式 #输出 2005-03-18 09:58:31
6.time.strptime()
用法:将时间格式字符串转换成struct_time元组格式
>>> strptime(string, format) -> struct_time #语法格式 %Y 完整年份. %m 月份 [01,12]. %d 一个月中的第几天 [01,31]. %H 一天中的第几个小时 [00,23]. %M 分钟 [00,59]. %S 秒 [00,61]. %z UTC的偏移时区. %a 本地简化的星期名称. %A 本地完整的星期名称. %b 本地简化月份名称. %B 本地完整月份名称. %c 本地相应的日期和时间表示. %I 第几个小时 [01,12]. %p 本地am或者pm. >>> import time >>> time.strptime("2017-03-30 17:30","%Y-%m-%d %H:%M") #转换为struct_time格式的时间对象 time.struct_time(tm_year=2017, tm_mon=3, tm_mday=30, tm_hour=17, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=89, tm_isdst=-1)
7.time.asctime()
用法:从struct_time元组格式转换成字符串格式
>>> help(time.asctime) #语法格式 asctime(...) asctime([tuple]) -> string import time x=time.localtime(1111111111) print(time.asctime(x)) #输出 Fri Mar 18 09:58:31 2005 #返回(星期 月 日 时 分 秒 年)
8.time.ctime
用法:将时间戳格式转换成字符串格式
>> help(time.ctime) #语法格式 ctime(...) ctime(seconds) -> string >>> time.ctime() 'Wed Jul 12 21:22:42 2017'
时间格式的转换
1.转换参数
2.时间格式转换关系图
datetime模块
1.datatime.datatime.now()
用法:返回当前时间
>>> import datetime >>> print(datetime.datetime.now()) #获取当前时间 2017-07-12 21:33:43.381365
2.datatime.datatime.timedelta()
用法:对某个时间的加减
>>> print(datetime.datetime.now()+datetime.timedelta(3)) #获取当前时间+3天 2017-07-15 21:36:17.006365 >>> print(datetime.datetime.now()+datetime.timedelta(-3)) #获取当前时间-3天 2017-07-09 21:37:21.492446 >>> print(datetime.datetime.now()+datetime.timedelta(hours=3)) #获取当前时间+3小时 2017-07-13 00:38:55.836818 >>> print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #获取当前时间-3小时 2017-07-12 18:39:19.115146 >>> print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #获取当前时间+30分钟 2017-07-12 22:09:55.359911
时间替换(修改时间)
>>> import datetime >>> c_time = datetime.datetime.now() >>> print(c_time) #当前时间输出 2017-07-22 10:47:22.682289 >>> update_c_time = c_time.replace(minute=3,hour=2) #时间替换 >>> print(update_c_time) #替换后的时间输出 2017-07-22 02:03:22.682289