【Python】Python3 的时间

Posted by 西维蜀黍 on 2020-08-09, Last Modified on 2021-09-21

当前时间

>>> 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