1、时间模块time
计算机时间分三种格式:
1.1、时间戳
从计算机元年1970年至今经过的秒数,计算机也只认时间戳这种格式,别的格式都是转给人看的!
>>> import time
>>> time.time
<built-in function time> # time是内嵌函数
>>> time.time()
1607479061.271664 # 时间戳
时间戳多被用来计时
start = time.time()
time.sleep(3)
stop = time.time()
print(stop - start)
# 执行得到结果
3.000750780105591
1.2、格式化时间
strftime格式化输出日期,这也是我们最常见的格式;多被用于展示,如日志等!
# 百分号字母分别对应:年、月、日、小时、分钟、秒
>>> time.strftime('%Y-%m-%d %H:%M:%S')
'2020-12-09 10:00:19'
另一种格式化时间,多见于外国
>>> time.asctime()
'Wed Dec 9 11:02:41 2020'
1.3、结构化时间
localtime结构化时间,将时间格式拆分开来!
# yday是今天已过去的天数;最后面的isdst是夏令时,也可以括号里填入参数获取单独的部分
>>> time.localtime()
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=2, tm_sec=29, tm_wday=2, tm_yday=344, tm_isdst=0)
1.4、时间格式转换
1.4.1、结构化时间转换为时间戳
>>> time.mktime(time.localtime())
1607482054.0
1.4.2、时间戳转换为结构化时间
>>> time.localtime(time.time())
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=54, tm_sec=35, tm_wday=2, tm_yday=344, tm_isdst=0)
图片来源于博客园:给你家马桶唱疏通
1.4.3、格式化时间转换为时间戳
>>> struct_time = time.strptime('1990-12-23 11:11:11','%Y-%m-%d %H:%M:%S') #格式化转换为结构化
>>> timestamp = time.mktime(struct_time) #结构化转换为时间戳
>>> print(timestamp)
661921871.0
1.5、时间运算
把上面的时间戳拿来直接进行数学运算即可
# time的时间运算过于麻烦,一般不用,下面会介绍datetime!
>>> timestamp + 7*24*3600 #往后10天
662526671.0
2、时间模块datetime
datetime是第三方模块
2.1、格式化时间
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2020, 12, 9, 10, 6, 38, 877955)
# 上面的格式显示太丑了,需要加上print打印才能跟time.time一样!
>>> print(datetime.datetime.now())
2020-12-09 10:16:32.822469
大家都知道世界时间已格林威治为标准,东西各分八大区,我们中国以上海东八区为准!世界标准时间为:
# 这是世界标准时间
>>> print(datetime.datetime.utcnow())
2020-12-09 03:17:04.318148
# 这是本地时间,差别就是时区!
>>> print(datetime.datetime.now())
2020-12-09 11:25:31.372415
2.2、时间运算
时间运算需要用到timedelta函数,不过不能用于年份级运算!
# 往后10天的时间
print(datetime.datetime.now() + datetime.timedelta(days=10))
# 执行得到结果
2020-12-19 10:33:41.112614
# 往后两周的时间
print(datetime.datetime.now() + datetime.timedelta(weeks=2))
# 执行得到结果
2020-12-23 10:32:46.685709
# 五天前的时间
print(datetime.datetime.now() + datetime.timedelta(days=-5))
# 执行得到结果
2020-12-04 10:34:18.310308
2.3、时间格式转换
fromtimestamp函数可以将时间戳转换为格式化时间,有两种转换方式!
# 第一种是将time.time当作参数传入
print(datetime.datetime.fromtimestamp(time.time()))
# 执行得到结果
2020-12-09 10:38:16.989391
# 第二种是直接输入时间戳秒数
print(datetime.datetime.fromtimestamp(999999999))
# 执行得到结果
2001-09-09 09:46:39