掌握python内置时间模块time、datetime的基本操作即可
基于python3.7.0
import time
time.time() # 当前系统时间戳,1970/1/1 00:00:00开始计秒
Out[3]: 1543932089.671177 # 浮点型
time.localtime() # 不带参数返回当前时间元组
Out[5]: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=4,
tm_hour=22, tm_min=8, tm_sec=16,
tm_wday=1, tm_yday=338, tm_isdst=0)
# tm_year :年
# tm_mon: 月
# tm_mday: 日
# tm_hour: 小时
# tm_min: 分钟
# tm_sec: 秒
# tm_wday: 一周的第几天
# tm_yday: 一年的第几天
# tm_isdst:夏令时吧,中国取消了,不用管这一个参数。
isinstance(time.localtime(), tuple)
Out[18]: True # 知道为啥叫时间元组了吧
time.localtime() 可以接受参数吗?可以!你觉得能接受怎样的参数?当然是时间戳啦
time.localtime(100000000) # 参数为某个时间戳
Out[19]: time.struct_time(tm_year=1973, tm_mon=3, tm_mday=3,
tm_hour=17, tm_min=46, tm_sec=40,
tm_wday=5, tm_yday=62, tm_isdst=0)
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 格式化时间元组,你的顺序和个数可以依据格式化字符来进行调整
Out[20]: '2018-12-04 22:46:16' # 字符串
必须知道的格式化字符!,也就是刚刚用到的,其他的遇到再查就可以了。
到这里,我们已经可以形成一个可以日常使用的时间处理逻辑了。
时间戳 ---- localtime() ---->> 时间元组 ---- strftime() ---->> 格式化时间
思考下,我们怎么从右边把这一个过程实现一遍呢?
时间戳 <<---- mktime() ---- 时间元组 <<---- strptime() ---- 格式化时间
time.strptime('2018-12-04 22:46:16', '%Y-%m-%d %H:%M:%S')
Out[26]: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=4,
tm_hour=22, tm_min=46, tm_sec=16,
tm_wday=1, tm_yday=338, tm_isdst=-1)
# 这是格式化字符一定要一一对应!!!如果没有后面的22:46:16,那么%H:%M:%S也没有
time.strptime('2018-12-04', '%Y-%m-%d')
Out[27]: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=4,
tm_hour=0, tm_min=0, tm_sec=0,
tm_wday=1, tm_yday=338, tm_isdst=-1)
a = time.strptime('2018-12-04', '%Y-%m-%d')
time.mktime(a)
Out[28]: 1543852800.0
掌握时间的加减即可,因为我们已经拥有了利用time模块进行基本时间转换的完整逻辑
import datetime
a = datetime.datetime.now()
print(a)
Out[8]: 2018-12-05 15:23:28.996803
b = a - datetime.timedelta(days=1) # 接受**kwargs:days,hours,seconds
print(b)
2018-12-04 15:25:40.543942