这里首先明确一个概念:
python主要中有三种时间记录方式(实际有更多,但是为了方便,这三种够用)
1.纪元值,也称为时间戳,是从1970到现在,单位是秒 :1635795393.5543194
2.datetime格式,年月日,时分秒微妙都有 ,注意这个是可以进行计算的:2021-11-02 03:32:39.140902
3.字符串格式:——这个你可以按自己想要的方式定义
另外还需要建立一个概念:时区
我们现在的这个时区 是东七区,比如我这里是 3点32 那位于0时区的时间就是 昨天的:(24+3-7)点32,也就是20点32,0时区的时间也叫UTC时间,是全球统一的
刚才这三种时间里面,一般我们用datetime来进行计算不同时区的时间
当然理论上纪元值也可以用于计算,但是纪元值能计算的datetime可以计算,那么我们就全部用datetime来计算
这样更直观,也可以少记一些东西
1.纪元值 ——time模块的time函数
"""知识点1:time.time()"""
import time
now = time.time()
# 1635795393.5543194
# 这个返回的是 从(自1970-1-1 00:00)到现在的经过的时间
# 这个时间实际上是UTC时间,你可以认为0时区的时间
2.datetime格式的本地时间和utc时间——datetime模块的datetime函数
"""知识点2:datetime.now()"""
from datetime import datetime
now = datetime.now()
print(now)
# 这个得到的是datetime格式的当地时间
# 2021-11-02 03:32:39.140902
"""知识点3:datetime.utcnow()"""
utc_now = datetime.utcnow()
print(utc_now)
# 这个得到的是datetime格式的utc时间
3.用时间差计算其他时区时间和未来过去时间——datetime模块的timedelta函数:
"""知识点4:timedelta(days=1,hours=2)"""
from datetime import datetime.timedelta
# 时间的加减
v2 = v1 + timedelta(days=140, minutes=5)
print(v2)
"""有了这个就可以计算出,其他地方的,未来某时,过去某时的时间了"""
4.计算时间差——datetime函数的两个时间直接相减
"""知识点5:datetime格式时间v1-v2"""
from datetime import datetime
now = datetime.now()
utc_now = datetime.utc_now()
delta = now - utc_now
# 这里得到的单位是datetime格式
"""知识点6:差值只能输出天,秒,微妙"""
print(delta.days,delta.seconds/60/60)
5.纪元值与datetime格式的转化 —— fromtimestamp 与 timestamp
"""知识点7:纪元值转化为datetime格式 datetime.fromtimestamp(now)"""
from datetime import datetime
import time
now1 = time.time()
now2 = datetime.fromtimestamp(now1)
print(now2)
# 2021-11-02 04:05:18.613530
"""知识点8:now2.timestamp() timestamp 将datetime值转化为纪元值"""
now = now2.timestamp()
# 这里可以看到并不是time.timestamp(now2) 说明这个应该是datetime的方法
print(now)
6.datetime格式与字符串格式的转化 —— strftime与strptime
"""知识点10:将字符串转化为datetime格式 datetime.strptime('text1',pattern)"""
from datetime import datetime
today = datetime.strptime('现在的时间是:2021年11月2日','现在的时间是:%Y年%m月%d日')
# 注意这里pattern不可以使用正则表达式,因为%d在正则里认为是数字,这里解读为天
# 解释器没有搞混是因为前面有strptime
print(today)
# 2021-11-02 00:00:00
# 不写的地方默认是0
"""知识点10:将datetime格式转化为字符串 datetime.strftime(字符串格式)"""
from datetime import datetime
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
# %Y年 %m月 %d天 %H小时 %M分钟 %S秒
# 这里的输出格式,自由发挥,你可以想输出什么就写什么,不是固定的