相关阅读:
本文主要是说 time
库。
参考文档:https://docs.python.org/2/library/time.html
三种时间格式
- 时间戳
- timetuple
- 时间字符串
time.time() # float
time.struct_time(...) # timetuple
time.struct_time(tm_year=2014, tm_mon=1, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=31, tm_isdst=0)
# .tm_zone 时区名称 中国:中国标准时间
# .tm_gmtoff 时区(秒) 中国:28800
相互转换
flowchart LR
timestamp(时间戳)
timetuple(timetuple)
timestr(时间字符串)
timestamp --localtime/gmtime--> timetuple
timetuple --mktime--> timestamp
timetuple --strftime/asctime--> timestr
timestr --strptime--> timetuple
补充:
# 可以直接从时间戳到字符串,不过是固定的格式,和 asctime 一样
time.ctime(time.time()) # 'Fri Jan 31 00:00:00 2014'
# 获取当前时间戳
datetime.datetime.now().timestamp()
# timetuple -> 时间戳
calendar.timegm(timetuple)
strftime / strptime
%Y-%m-%d %H:%M:%S // yyyy-mm-dd hh:mm:ss
%a, %d %b %Y %H:%M:%S %Z // Fri, 31 Jan 2014 00:00:00 中国标准时间
其他函数
# 系统时间
time.time() # float
time.time_ns() # int
# 单调时钟,不受系统时钟拨动的影响,更适合用来计算执行时间
time.monotonic() # float
time.monotonic_ns() # int
# 当前进程运行时间(CPU 时间,不包括休眠)
time.process_time()
time.process_time_ns()
# 当前线程运行时间(CPU 时间,不包括休眠)
time.thread_time()
time.thread_time_ns()
# 性能计数器时间(原理不清楚)
# 和 monotonic 类似,但是更高的精度
time.perf_counter()
time.perf_counter_ns()
a1, b1 = time.perf_counter(), time.monotonic() # 267634.4686157, 267629.359
a2, b2 = time.perf_counter(), time.monotonic() # 267641.2355833, 267636.125
a2 - a1, b2 - b1 # 6.7669675999786705, 6.76600000000326
time.struct_time(...) # timetuple
time.sleep()
# 'monotonic': time.monotonic()
# 'perf_counter': time.perf_counter()
# 'process_time': time.process_time()
# 'thread_time': time.thread_time()
# 'time': time.time()
time.get_clock_info(name)
几个常量:
time.daylight # 0/1 是否夏令时(DST)时区
time.tzname # tuple(str, str) 当前 DST 时区,本地 DST 时区名称
time.timezone # int 本地非 DST 时区偏移(秒)。Asia/Shanghai 是 -28800 (3600 * 8)
time.altzone # int 本地 DST 时区偏移(秒)。Asia/Shanghai 是 -32400 (3600 * 9)
timezone
,altzone
可以理解成换算 UTC 时间时的增减值。- 这几个值和 tzset 方法有关。