应用场景:
如果说,一个用户的登录时间是:‘2021-10-28 17:23:11’ 这是一个字符串
那么,如果他续费了30天的vip,则到期的时间是多少?
所以,对于时间字符串的计算应该如何操作?
相关内容:
1:时间的类型分为以下三种:
time包下的三个函数:产生3种时间类型
:①:时间戳
time.time()
②:结构化时间
time.localtime()
③:特定结构的字符串时间
time.strftime("%Y-%m-%d %H:%M:%S")
#时间戳,用于计算
>>>time.time()
1635420573.3312726
#结构化时间,相当于一个时间对象,可以获得其中的年、月、日
>>>time.localtime()
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=28, tm_hour=19, tm_min=29, tm_sec=38, tm_wday=3, tm_yday=301, tm_isdst=0)
>>>time.localtime().tm_year
2021
>>>time.localtime().tm_mon
10
>>>time.localtime().tm_hour
19
#特定格式的字符串时间,用于展示
>>>time.strftime("%Y-%m-%d %H:%M:%S")
'2021-10-28 19:30:19'
datetime模块的函数:
产生结构化时间:
>>>datetime.datetime.now()
datetime.datetime(2021, 10, 28, 19, 40, 51, 19537)
>>>datetime.timedelta(days=3)
datetime.timedelta(days=3)
>>>datetime.timedelta(days=3).total_seconds()#可以获得天数的秒数
259200.0
>>>datetime.datetime.now().time()
datetime.time(19, 44, 52, 916426)
>>>datetime.datetime.now().date()
datetime.date(2021, 10, 28)
>>>datetime.datetime.now().hour
19
2:涉及对时间类型的转换:
字符串<----->结构化
注意:以下两个函数:一个是strip、strif,还有参数的位置。
#将字符串转化为结构化时间。
b=time.strptime(a,"%Y-%m-%d %H:%M:%S")
>>>a='2021-10-28 19:51:51'
>>>b=time.strptime(a,"%Y-%m-%d %H:%M:%S")
>>>b
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=28, tm_hour=19, tm_min=51, tm_sec=51, tm_wday=3, tm_yday=301, tm_isdst=-1)
#将结构化时间转化为,字符串。
a=time.strftime("%Y-%m-%d %H:%M:%S")
>>>c=time.strftime("%Y-%m-%d %H:%M:%S",b)
>>>c
'2021-10-28 19:51:51'
结构化<—>时间戳
#将结构化时间转化为时间戳。
c=time.mktime(b)
>>>b
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=28, tm_hour=19, tm_min=51, tm_sec=51, tm_wday=3, tm_yday=301, tm_isdst=-1)
>>>c=time.mktime(b)
>>>c
1635421911.0
#将时间戳转化为结构化时间
e=time.localtime(d)
>>>e=time.localtime(c)
>>>e
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=28, tm_hour=19, tm_min=51, tm_sec=51, tm_wday=3, tm_yday=301, tm_isdst=0)
所以,中间桥梁是结构化时间。
解决问题:
>>>a='2021-10-28 17:23:11'
#将a先转化结构类型时间,再转化为时间戳类型
>>>b=time.strptime(a,"%Y-%m-%d %H:%M:%S")
>>>b
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=28, tm_hour=17, tm_min=23, tm_sec=11, tm_wday=3, tm_yday=301, tm_isdst=-1)
>>>c=time.mktime(b)
>>>c
1635412991.0
#获得3天的秒数时间戳
>>>d=datetime.timedelta(days=3).total_seconds()
>>>d
259200.0
#得到结果的时间戳
>>>result=c+d
>>>result
1635672191.0
#将结果转化为字符串类型时间
>>>result=time.localtime(result)
>>>result
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=31, tm_hour=17, tm_min=23, tm_sec=11, tm_wday=6, tm_yday=304, tm_isdst=0)
>>>time.strftime("%Y-%m-%d %H:%M:%S",result)
'2021-10-31 17:23:11'
>>>a
'2021-10-28 17:23:11'
版权声明:本文为m0_52985451原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。