首先先说下12小时制的时间.
12小时制的 12:50PM 对应 24小时制的12:50
12小时制的 12:50AM 对应 24小时制的 00:50
time.time() 方法是获取当前时间时间戳(以秒为单位的浮点数)
a1 = time.time()
print(a1)
>>>1530705274.864062
time.localtime("时间戳") 方法是将时间戳转换为当地的时间, 不过不易读,想要更易读,使用time.asctime()方法转换一下
a2 = time.localtime(a1)
print(a2)
>>>time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=19, tm_min=54, tm_sec=34, tm_wday=2, tm_yday=185, tm_isdst=0)
time.asctime() 方法将元祖格式的时间转换为更易读的方式
a3 = time.asctime(a2)
print(a3)
>>>Wed Jul 4 19:59:43 2018
time.mktime() 将本地时间格式的元祖转换为时间戳
a7 = time.mktime(a2)
print(a7) # 输出时间戳
下面是经常会用到的转换
time.strftime()
time.strftime("你将要转换成的目标格式","你想要转换的原时间的本地时间形式或者是前面格式对应的元祖")
如果你要传元祖,元祖需要9个int类型的参数,9个参数分别对应本地时间格式的9个参数
strf_style = "%Y-%m-%d %H:%M:%S"
a4 = time.strftime(strf_style,time.localtime(time.time()))
print(a4)
>>>2018-07-04 20:11:16
a5 = time.strftime(strf_style,(2017,5,21,13,14,0,0,0,0))
print(a5)
>>>2017-05-21 13:14:00
time.strptime() 将你提供时间按照你提供的格式解析为本地时间(time.struct_time(9个参数的元祖))
与strftime正好相反,格式如下: 参数顺序与strftime不一样,要注意
time.strptime("你想要转换的时间数据","原数据对应的格式即第一个参数的格式")
a6 = time.strptime(a5,strf_style)
print(a6)
综上总结:
time.time()生产时间戳
time.localtime()和time.mktime() 是一对
time.strftime()和time.strptime()是一对
import time
def convert_time(time_str):
str1 = time_str[-2:] # 格式
data = time_str[:-2] # 时间
if str1.lower() == "am" and int(time_str[-7:-5])==12:
hour = "00"
data = time_str[0:12] + hour + time_str[-5:-2]
if str1.lower() == "pm":
if int(time_str[-7:-5]) < 12 :
hour = str(int(time_str[-7:-5])+12)
else: # int(time_str[-7:-5]) == 12
hour = "12"
data = time_str[0:12] + hour + time_str[-5:-2]
str2 = time.mktime(time.strptime(data,"%d-%b-%Y %H:%M")) # 转换为时间戳
finally_result = str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(str2))) # 转换为指定格式
return finally_result
res = convert_time("01-Jul-2018 11:52PM")
print(res)
a1 = time.time()
print(a1)
a2 = time.localtime(a1)
print(a2)
a3 = time.asctime(a2)
print(a3)
strf_style = "%Y-%m-%d %H:%M:%S"
a4 = time.strftime(strf_style,time.localtime(time.time()))
print(a4)
a5 = time.strftime(strf_style,(2017,5,21,13,14,0,0,0,0))
print(a5)
a6 = time.strptime(a5,strf_style)
print(a6)
a7 = time.mktime(a2)
print(a7)
格式 含义
%a 本地(locale)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,01 - 12)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(01 - 61)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00 - 99)
%Y 完整的年份
%Z 时区的名字(如果不存在为空字符)
%% ‘%’字符