这里用到了datetime 和time 模块
import datetime
import time
# str转时间格式:
dd = '2019-03-17 11:00:00'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d %H:%M:%S")
print(dd,type(dd))
# 结果为: 2019-03-17 00:00:00 <class 'datetime.datetime'>
# ------------------------------------------------------------------------------------------------------------------------------------------
dd = '20190317'
dd = datetime.datetime.strptime(dd, "%Y%m%d")
print(dd,type(dd))
# 结果为: 2019-03-17 00:00:00 <class 'datetime.datetime'>
# ------------------------------------------------------------------------------------------------------------------------------------------
# 时间格式转str:
dd = datetime.datetime.now() # 2023-02-01 15:15:17.154284
dc = dd.strftime("%Y-%m-%d %H:%M:%S")
print(dc,type(dc))
# 结果为: 2023-02-01 15:15:49 <class 'str'>
dd = datetime.datetime.now() # 2023-02-01 15:15:17.154284
dc = dd.strftime("%Y%m%d")
print(dc,type(dc))
# 结果为: 20230201 <class 'str'>
# ------------------------------------------------------------------------------------------------------------------------------------------
# 求两个字符串时间的差值
dd = '2019-03-17 11:00:00'
cc = '2019-03-16 01:00:00'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d %H:%M:%S")
cc = datetime.datetime.strptime(cc, "%Y-%m-%d %H:%M:%S")
print(dd-cc,type(dd-cc))
# 结果为: 1 day, 10:00:00 <class 'datetime.timedelta'>
dd = '2019-03-17'
cc = '2017-03-16'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d")
cc = datetime.datetime.strptime(cc, "%Y-%m-%d")
print(dd-cc,type(dd-cc),'差值为:{}天'.format(str(dd-cc).split()[0]))
# 结果为: 731 day, 0:00:00 <class 'datetime.timedelta'> 差值为:731天
# ------------------------------------------------------------------------------------------------------------------------------------------
# 时间转时间戳
t_1 = '20210315'
time_1 = time.strptime(t_1, '%Y%m%d') # 使用 time 将它转换为时间格式
timeStamp = int(time.mktime(time_1))
print(time_1,timeStamp)
# 结果为 time.struct_time(tm_year=2021, tm_mon=3, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=74, tm_isdst=-1) 1615737600
# ------------------------------------------------------------------------------------------------------------------------------------------
# 时间戳转时间
timeStamp = 1615737679
time_instance = datetime.datetime.fromtimestamp(timeStamp)
style_time = time_instance .strftime("%Y-%m-%d %H:%M:%S")
print(time_instance,type(time_instance),style_time,type(style_time))
# 结果为: 2021-03-15 00:00:00 <class 'datetime.datetime'> 2021-03-15 00:00:00 <class 'str'>
------------------------------------------------------------------------------------------------------------------------------------------
# 加减日期
# 今天 日期
current_day_instance = datetime.date.today()
# 昨天 日期
last_day_instance = current_day_instance - datetime.timedelta(days=1) # 前天-1 明天+1
print(current_day_instance,type(current_day_instance),last_day_instance,type(last_day_instance))
# 结果为: 2023-02-01 <class 'datetime.date'> 2023-01-31 <class 'datetime.date'>
------------------------------------------------------------------------------------------------------------------------------------------
# 计算下一个整点的 秒数 当前时间是2023-02-01 15:55
time_aim = str(datetime.datetime.now() + datetime.timedelta(hours=1))[:13]+':00:00' # 创建 目标时间 下一个小时的整点
target_time = datetime.datetime.strptime(time_aim, '%Y-%m-%d %H:%M:%S') # 格式转换
delay = (target_time - datetime.datetime.now()).total_seconds() # 相减 获取 差值的秒数
print(time_aim,type(time_aim),target_time,type(target_time),'还相差{}秒进去下一小时'.format(delay))
# 结果为 2023-02-01 16:00:00 <class 'str'> 2023-02-01 16:00:00 <class 'datetime.datetime'> 还相差222.463207秒进去下一小时
------------------------------------------------------------------------------------------------------------------------------------------
# 格式化时间日期
# %a 星期几的简写
# %A 星期几的全称
# %b 月分的简写
# %B 月份的全称
# %c 标准的日期的时间串
# %C 年份的后两位数字
# %d 十进制表示的每月的第几天
# %D 月/天/年
# %e 在两字符域中,十进制表示的每月的第几天
# %F 年-月-日
# %g 年份的后两位数字,使用基于周的年
# %G 年分,使用基于周的年
# %h 简写的月份名
# %H 24小时制的小时
# %I 12小时制的小时
# %j 十进制表示的每年的第几天
# %m 十进制表示的月份
# %M 十时制表示的分钟数
# %n 新行符
# %p 本地的AM或PM的等价显示
# %r 12小时的时间
# %R 显示小时和分钟:hh:mm
# %S 十进制的秒数
# %t 水平制表符
# %T 显示时分秒:hh:mm:ss
# %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
# %U 第年的第几周,把星期日做为第一天(值从0到53)
# %V 每年的第几周,使用基于周的年
# %w 十进制表示的星期几(值从0到6,星期天为0)
# %W 每年的第几周,把星期一做为第一天(值从0到53)
# %x 标准的日期串
# %X 标准的时间串
# %y 不带世纪的十进制年份(值从0到99)
# %Y 带世纪部分的十制年份
# %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
# %% 百分号