在Python中,用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间
获取时间戳:
time.time() ====>如1506388236.216345
获取格式化时间字符串(str f time):
time.strftime('%Y-%m-%d %H:%M:%S') ====>如2017-09-26 09:12:48
注意其中的空格、短横线和冒号都是美观修饰符号,真正起控制作用的是百分符。对于格式化控制字符串"%Y-%m-%d %H:%M:%S,其中每一个字母所代表的意思如下表所示,注意大小写的区别:
格式 含义
%a 本地星期名称的简写(如星期四为Thu)
%A 本地星期名称的全称(如星期四为Thursday)
%b 本地月份名称的简写(如八月份为agu)
%B 本地月份名称的全称(如八月份为august)
%c 本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06)
%d 一个月中的第几天(01 - 31)
%f 微秒(范围0.999999)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,0 - 11)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的标识符
%S 秒(00 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之 前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期字符串(如15/08/01)
%X 本地相应时间字符串(如08:08:10)
%y 去掉世纪的年份(00 - 99)两个数字表示的年份
%Y 完整的年份(4个数字表示年份)
%z 与UTC时间的间隔(如果是本地时间,返回空字符串)
%Z 时区的名字(如果是本地时间,返回空字符串)
%% ‘%’字符
获取结构化时间:
time.localtime() ====>如time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=9, tm_min=14, tm_sec=50, tm_wday=1, tm_yday=269, tm_isdst=0)
结构化时间元组共有9个元素(可以通过time.struct_time()['tm_mon']的方式来取值),按顺序排列如下表:
索引 属性 取值范围
0 tm_year(年) 比如2017
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 61
6 tm_wday(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为-1
time模块的主要方法:
1. time.sleep(t)
time模块最常用的方法之一,用来睡眠或者暂停程序t秒,t可以是浮点数或整数。
2. time.time()
返回当前系统时间戳。时间戳可以做算术运算。
3. time.ctime([secs])
时间戳---->格式化字符串。默认使用time.time()作为参数。
4. time.strftime("format",time.localtime())
返回当前系统格式化时间。结构化时间---->格式化时间,显示的格式由参数format决定。如果未指定t,默认传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2017-09-26 10:34:50'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
'2017-09-26 02:34:53'
5. time.strptime(string,"format")
格式化时间---->结构化时间。time.strptime()方法根据指定的格式把一个时间字符串解析为时间元组。要注意的是,你提供的字符串要和format参数的格式一一对应,如果string中日期间使用“-”分隔,format中也必须使用“-”分隔,时间中使用冒号“:”分隔,后
面也必须使用冒号分隔,否则会报格式不匹配的错误。
>>> stime = "2017-09-26 12:11:30"
>>> st = time.strptime(stime,"%Y-%m-%d %H:%M:%S")
>>> st
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=12, tm_min=11, tm_sec=30, tm_wday=1, tm_yday=269, tm_isdst=-1)
6. time.localtime([secs])
返回当前系统的结构化时间。如果secs参数未提供,则以当前时间为准,即time.time()。
7. time.mktime(time)
结构化时间---->时间戳。time.mktime()执行与localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数(如果输入的值不是一个合法的时间,将触发OverflowError或ValueError)。
8. time.asctime(time)
结构化时间---->Sun Aug 23 14:31:59 2017这种形式的格式化时间字符串。默认将time.localtime()作为参数。
时间格式之间的转换:
从 到 方法
时间戳 UTC结构化时间 gmtime()
时间戳 本地结构化时间 localtime()
UTC结构化时间 时间戳 calendar.timegm()
本地结构化时间 时间戳 mktime()
结构化时间 格式化字符串 strftime()
格式化字符串 结构化时间 strptime()