# coding:utf-8
# 时间模块
# 导入方式一:
from datetime import datetime
from datetime import timedelta
import time
# print(datetime.now())
# 导入方式二:
# import datetime
# print(datetime.datetime.now())
# 1,获取时间间隔,通过函数timedelta(weeks=0,days=0,hours=0,minutes=0,seconds=0,microseconds=0, milliseconds=0) 获得时间间隔;
# weeks=0 周,days=0 天,hours=0 小时,minutes=0 分钟,seconds=0 秒,microseconds=0 毫秒, milliseconds 微秒
timeobj = timedelta(weeks=2, days=1, hours=3, minutes=20, seconds=50, microseconds=200)
print(timeobj) # 15 days, 3:20:50.000200
# 2, 获得三天之后的时间
days = timedelta(days=3)
print(days)
print(datetime.now() + days)
# 3,获得三天之前的时间
before_time = timedelta(days=3)
three_time = datetime.now()-before_time
print(datetime.now()-before_time)
# 4,获取一小时之前的时间
before_hour = timedelta(hours=1)
print(datetime.now()-before_hour)
# 时间对象之间我们可以做 加法与减法 的操作,它无法进行时间对象之间的传输,比如A服务想要给B服务传输一个时间对象,但是时间对象是无法传输的,必须先要转成字符串
# 5,datetime 获取时间戳 使用 timestamp(date) : date 时间对象,必传
datetime_stamp = datetime.timestamp(datetime.now())
print('使用datetime获得时间戳(单位秒):', datetime_stamp)
# 6,datetime时间戳转为时间对象;fromtimestamp(timestamp)
obj_timestamp = datetime.fromtimestamp(datetime_stamp)
print('datetime时间戳转为时间对象:', obj_timestamp)
# 时间对象转字符串 strftime(format)
now = datetime.now()
str_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(str_date)
# 字符串转时间对象 strptime(str_time, formate);当时间字符串转时间对象时,格式要一致,否则报错
obj_date = datetime.strptime(str_date, "%Y-%m-%d %H:%M:%S")
print(obj_date)
# time模块,
# 时间戳是从1970年1月1日00时00分00秒至今的总毫秒(秒)数,python是按照秒来计算时间戳的
# python中,用timestamp表示时间戳,是float类型,
# time() 获取时间戳
timestamp = time.time()
print('时间戳', timestamp)
# 获取本地的时间函数 localtime() ; 不传参数的情况
localtime = time.localtime()
# tm_year 四位数的年单位 1970~∞
# tm_mon 月 1~12
# tm_mday 日 1~31
# tm_hour 小时 0~23
# tm_min 分钟 0~59
# tm_sec 秒 0~61(闰年会多两秒)
# tm_wday 一周的第几天, tm_yday 一年的第几日;
# tm_isdst 夏令时,-1 或 0 ;1 代表是否是夏时令;
print('本地时间', localtime)
# 本地时间 time.struct_time(tm_year=2022, tm_mon=5, tm_mday=19, tm_hour=9, tm_min=52, tm_sec=46, tm_wday=3, tm_yday=139, tm_isdst=0)
# localtime(time) 传参数的情况
format_localtime = time.localtime(timestamp)
print(format_localtime)
# 将指定时间对象转为时间戳
a = "2021-08-31 11:00:00"
# 将其转换为时间数组
timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
# 转换为时间戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp, type(timeArray))
# 暂停函数 sleep(sleep_time) 该函数会让程序暂停执行一段时间; sleep_time 暂停执行的秒数
# time的strftime : time.strftime(format, t)
str_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print('time的strftime:', str_time)
# time的strptime() 将时间字符串转为 时间对象
obj_time2 = time.strptime('2020-05-05', '%Y-%m-%d')
print(obj_time2)
# time.struct_time(tm_year=2020, tm_mon=5, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=126, tm_isdst=-1)