美文网首页python技巧
python的time模块,以及12小时制与24小时制转换(时间

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

作者: 陆_志东 | 来源:发表于2018-07-04 20:26 被阅读1次

首先先说下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)

相关文章

网友评论

    本文标题:python的time模块,以及12小时制与24小时制转换(时间

    本文链接:https://www.haomeiwen.com/subject/ckeyuftx.html