两种时间表示
时间戳
- 从1970年1月1日0时0分0秒到现在的时间
- 不同语言,精度不同,有整数也有浮点数
- 如果查找的时间是1970年以前或者遥远的未来,可能出现异常
- 32位系统能够支持到2038年
时间元组
属性 | 值 |
---|---|
tm_year | 2019 |
tm_mon | 1~12 |
tm_mday | 1~31 |
tm_hour | 0~23 |
tm_min | 0~59 |
tm_sec | 0~61[1] |
tm_wday | 0~6 |
tm_yday | 1~366 |
tm_isdst | 0, 1, -1[2] |
名词解释
UTC
- 又称世界协调时间、世界标准时间
- 以英国的格林尼治天文台所在地区的时间作为参考的时间
- 中国在东八区,按
UTC+8
算
DST
- 夏令时
- 在夏天的时候将时间调快一小时
- 本意是督促大家早睡早起节省蜡烛,每天变成 25 个小时,本质没变还是 24 小时
举例
>>> import time # 下面的例子就不重复这个导入操作了
>>>
例1
-
time.timezone
: 当前时区和 UTC 时间相差的秒数 -
time.altzone
: 对使用夏令时的地区而言,获取当前时区与 UTC 时间相差的秒数 -
time.daylight
- 测当前是否是夏令时时间状态
- 不使用夏令时的地区返回 0
>>> time.timezone
-28800
>>> time.altzone
-32400
>>> time.daylight
0
>>>
例2
time.time()
: 获取当前时间戳time.localtime([secs])
- 时间戳转时间元组
- 若没传值,则转换当前的时间戳
>>> time.time()
1576070236.623945
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=12, tm_mday=11, tm_hour=21, tm_min=17, tm_sec=29, tm_wday=2, tm_yday=345, tm_isdst=0)
>>> t = time.localtime()
>>> t.tm_hour
21
例3
time.asctime([tupletime])
- 将时间元组转换为日期字符串
- 若没传值,则转换当前的时间戳
>>> t1 = time.localtime()
>>> t2 = time.asctime(t1)
>>> type(t2)
<class 'str'>
>>> t2
'Wed Dec 11 21:18:03 2019'
例4
time.ctime([secs])
- 时间元组转日期字符串
- 相当于
asctime(localtime([secs]))
- 若没传值,则转换当前的时间戳
>>> t = time.ctime()
>>> type(t)
<class 'str'>
>>> t
'Wed Dec 11 21:19:02 2019'
例5
time.mktime(tupletime)
- 时间元组转时间戳
- 大多数时区,
mktime(gmtime(0))
通常不会返回零;返回timezone
或altzone
>>> lt = time.localtime()
>>> ts = time.mktime(lt)
>>> type(ts)
<class 'float'>
>>> ts
1576070374.0
例6
time.clock()
- 浮点秒数转 CPU 时间
- 依赖操作系统
time.sleep(secs)
- 延迟函数
- 参数可以是浮点数
# run in ipython
t0 = time.clock()
time.sleep(3)
t1 = time.clock()
print(t1 - t0)
>>>
...
DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
"""Entry point for launching an IPython kernel.
3.0017606999999984
...
This is separate from the ipykernel package so we can avoid doing imports until
- 官方友情提醒
- Python 3.3 以后不推荐,3.8 中被移除
- 使用
time.perf_counter()
或time.process_time()
代替
例7
time.strftime(format[, t])
- 用时间元组格式化日期
- 若没传值,则转换当前的时间元组
符号 | 释义 |
---|---|
%Y | 四位数的年份表示 [000,9999] |
%y | 两位数的年份表示[00,99] |
%m | 月份 [01,12] |
%d | 月内某天 [01,31] |
%H | 24 小时制的小时数 [00,23] |
%I | 12小时制的小时数 [01,12] |
%M | 分钟数 [00,59] |
%S | 秒数 [00,61] |
%z | 当前时区名称 用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移 H 代表十进制的小时数,M 代表十进制的分钟数 |
%a | 本地星期简写 |
%A | 本地星期名称 |
%b | 本地月份简写 |
%B | 本地月份名称 |
%c | 本地相应的日期表示和时间表示 |
%p | 本地 A.M. 或 P.M. 的等价符 |
补充符号 | 释义 |
---|---|
%j | 一年中的第几天 [001,366] |
%U | 一年中的星期数 [00,53] 周日是一周的开始 第一个周日之前的所有天数都放在第 0 周 |
%w | 一个星期中的第几天 [0,6],0 是周日 |
%W | 和 %U 基本相同,不过 %W 以周一为一周的开始 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%% | % 本身 |
>>> lt = time.localtime()
>>> ft = time.strftime("%Y-%m-%d %H:%M", lt)
>>> ft
'2019-12-11 21:20'
>>>