python的time模块,以及12小时制与24小时制转换(时间转换)

首先先说下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  时区的名字(如果不存在为空字符)
%%  ‘%’字符

你可能感兴趣的:(python的time模块,以及12小时制与24小时制转换(时间转换))