day19 time模块

时间的表示方式

有3种表示方式:

  1. 时间戳:给机器看的(float格式)
  2. 格式化的字符串:给人看的(格式化时间)
  3. 元组:计算用的(结构化时间)
import time
# 时间戳
# 返回一个时间戳,表示从 1970.1.1 到现在的秒数
print(time.time())  # 1553959680.65606

# 字符串时间
# 字母表示是固定的,但是格式不固定随便改
print(time.strftime("%Y-%m-%d %H:%M:%S"))   # 2019-03-30 23:44:32
print(time.strftime("%Y/%m/%d %H:%M:%S"))   # 2019/03/30 23:44:32
print(time.strftime("%H:%M:%S"))    # 23:44:32

# 结构化时间
struct_time = time.localtime()
print(struct_time)  # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=30, tm_hour=23, tm_min=45, tm_sec=54, tm_wday=5, tm_yday=89, tm_isdst=0)
print(struct_time.tm_year)  # 2019

时间的转换

  时间戳不能和结构化时间直接转化,只能通过格式化时间进行中介。

  时间戳  -----------localhost/gmtime------------->  结构化时间

  时间戳  <---------mktime----------------------------  结构化时间

import time
# 时间戳时间转换成格式化时间
t = time.time()
print(t)
# 转换确定的时间戳可以用 localtime 转换
print(time.localtime(1553962314))
# 转换 动态赋值 的 变量 时间可以用 gmtime 转换
print(time.gmtime(t))
# 格式化时间转换成 时间戳时间 用 mktime 转换
print(time.mktime(time.localtime()))
# 运行结果:
# 1553962325.1933188
# time.struct_time(tm_year=2019, tm_mon=3, tm_mday=31, tm_hour=0, tm_min=11, tm_sec=54, tm_wday=6, tm_yday=90, tm_isdst=0)
# time.struct_time(tm_year=2019, tm_mon=3, tm_mday=30, tm_hour=16, tm_min=12, tm_sec=5, tm_wday=5, tm_yday=89, tm_isdst=0)
# 1553962325.0

  字符串时间  -----------strptime------------->  结构化时间

  字符串时间  <-----------strftime--------------  结构化时间

# 将字符串时间转换成 结构化时间 用 strptime 转换 需要指定格式
print(time.strptime('2000-12.31','%Y-%m.%d'))
    # time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1)
#  将结构化时间转换成 字符串时间 strftime 转换 需要指定格式
print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000)))    # 01/24/2065 13:20:00

ps:一些舒服的显示

# 一些舒服的显示
print(time.asctime())   # Sun Mar 31 00:24:40 2019
print(time.asctime(time.localtime(150000000)))  # Thu Oct  3 10:40:00 1974
print(time.ctime())     # Sun Mar 31 00:26:46 2019
print(time.ctime(150000000))    # Thu Oct  3 10:40:00 1974

ps:计算时差:

# 计算时间差
true_time = time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
now_time = time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time = now_time - true_time
struct_time = time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                            struct_time.tm_mday-1,struct_time.tm_hour,
                                            struct_time.tm_min,struct_time.tm_sec))
# 过去了0年0月1天2小时30分钟0秒

猜你喜欢

转载自www.cnblogs.com/purewhite/p/10629936.html