当前时间
>>> import datetime
>>> datetime.datetime.today() # 不包含时区信息的当前时间(Naive time)
datetime.datetime(2020, 8, 9, 17, 36, 6, 921616)
>>> datetime.datetime.now() # 不包含时区信息的当前时间(当不传入 tz 参数时,和datetime.today()没有区别)
datetime.datetime(2019, 10, 19, 10, 23, 38, 117425)
>>> import time
>>> time.time() # 获取当前时间对应 Unix time 时间戳(Naive time),这意味着,即使修改电脑的时区,获取的这个值也不会变化(因为 Unix time 是绝对时间,即在同一个时刻,在不同时区获取到的 Unix time 也是完全一样的)
1596965822.509548
From https://docs.python.org/3/library/time.html#time.time
Unix timestamp 时间戳转换为datetime
>>> from datetime import datetime
>>> ts = int("1596966313")
>>> datetime.fromtimestamp(ts) # 将时间戳(Naive time)转换为 datetime
datetime.datetime(2020, 8, 9, 17, 45, 13)
>>> datetime.utcfromtimestamp(ts)
datetime.datetime(2020, 8, 9, 9, 45, 13) # 将时间戳(UTC time)转换为 datetime
格式化日期
我们可以使用 time 模块的 strftime 方法来格式化日期,:
time.strftime(format[, t])
>>> import datetime
>>> datetime.datetime.today().strftime("%a %b %d %H:%M:%S %Y")
'Sun Aug 09 17:40:14 2020'
# 格式化成2016-03-20 11:45:39形式
>>> datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S")
格式符 | 说明 |
---|---|
%a | 星期的英文单词的缩写:如星期一, 则返回 Mon |
%A | 星期的英文单词的全拼:如星期一,返回 Monday |
%b | 月份的英文单词的缩写:如一月, 则返回 Jan |
%B | 月份的引文单词的缩写:如一月, 则返回 January |
%c | 返回datetime 的字符串表示,如03/08/15 23:01:26 |
%d | 返回的是当前时间是当前月的第几天 |
%f | 微秒的表示: 范围: [0,999999] |
%H | 以24小时制表示当前小时 |
%I | 以12小时制表示当前小时 |
%j | 返回 当天是当年的第几天 范围[001,366] |
%m | 返回月份 范围[0,12] |
%M | 返回分钟数 范围 [0,59] |
%P | 返回是上午还是下午–AM or PM |
%S | 返回秒数 范围 [0,61]。。。手册说明的 |
%U | 返回当周是当年的第几周 以周日为第一天 |
%W | 返回当周是当年的第几周 以周一为第一天 |
%w | 当天在当周的天数,范围为[0, 6],6表示星期天 |
%x | 日期的字符串表示 :03/08/15 |
%X | 时间的字符串表示 :23:22:08 |
%y | 两个数字表示的年份 15 |
%Y | 四个数字表示的年份 2015 |
%z | 与utc时间的间隔 (如果是本地时间,返回空字符串) |
%Z | 时区名称(如果是本地时间,返回空字符串) |
Reference
- https://docs.python.org/3/library/datetime.html#module-datetime
- https://docs.python.org/3/library/time.html#time.time
- https://www.runoob.com/python/python-date-time.html
- https://stackoverflow.com/questions/3682748/converting-unix-timestamp-string-to-readable-date