一、时间的三种模式
在Python中,通常有这几种方式来表示时间:
- 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
- 格式化的时间字符串(Format String)
- 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
#一:time import time # 时间分为三种格式: # 1、时间戳:从1970年到现在经过的秒数 # 作用:用于时间间隔的计算 print(time.time()) # 1585577079.4596283 # 2、按照某种格式显示的时间:2020-03-30 11:11:11 # 作用:用于展示时间 print(time.strftime('%Y-%m-%d %H:%M:%S %p')) # 2020-03-30 22:03:33 PM print(time.strftime('%Y-%m-%d %X')) # 2020-03-30 22:03:33 # 3、结构化的时间 # 作用:用于单独获取时间的某一部分 res=time.localtime() print(res) # time.struct_time(tm_year=2020, tm_mon=3, tm_mday=30, tm_hour=22, tm_min=4, tm_sec=39, tm_wday=0, tm_yday=90, tm_isdst=0) print(res.tm_year) # 2020 print(res.tm_yday) # 90
二、datetime 模块
#二:datetime import datetime print(datetime.datetime.now()) # 2020-03-30 22:06:06.536180 print(datetime.datetime.now() + datetime.timedelta(days=3)) # 2020-04-02 22:06:06.536180 print(datetime.datetime.now() + datetime.timedelta(weeks=1)) # 2020-04-06 22:06:06.536180
import datetime print(datetime.datetime.now()) # 当前时间 print(datetime.datetime.utcnow()) # 世界时间 print(datetime.datetime.fromtimestamp(333333)) # 将时间戳直接转换成 日期格式 1970-01-05 04:35:33
三、时间模块需要掌握的操作
3.1 时间格式的转换
# 1、时间格式的转换 # struct_time->时间戳 import time s_time=time.localtime() print(time.mktime(s_time)) # 时间戳->struct_time tp_time=time.time() print(time.localtime(tp_time)) # 补充:世界标准时间与本地时间 print(time.localtime()) print(time.gmtime()) # 世界标准时间,格林威治时间 print(time.localtime(333333333)) print(time.gmtime(333333333)) # struct_time->格式化的字符串形式的时间 s_time=time.localtime() print(time.strftime('%Y-%m-%d %H:%M:%S',s_time)) print(time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S'))
3.2 时间戳与格式化时间的转换(!!!重点!!!)
# format string<------>timestamp # '1988-03-03 11:11:11'+7 # format string--->struct_time--->timestamp 格式化字符串时间转换成时间戳 struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S') timestamp=time.mktime(struct_time)+7*86400 print(timestamp) # 573966671.0 # format string<---struct_time<---timestamp 时间戳转换成格式化字符串时间 res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp)) print(res) # 1988-03-10 11:11:11
3.2 了解知识
#--------------------------按图2转换时间 # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。 # 如果没有参数,将会将time.localtime()作为参数传入。 print(time.asctime())#Sun Sep 11 00:43:43 2016 # ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为 # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。 print(time.ctime()) # Sun Sep 11 00:46:38 2016 print(time.ctime(time.time())) # Sun Sep 11 00:46:38 2016