一、获取各种格式的当前时间
时间类型字符串(str),时间戳(float/int),结构体时间(time.struct_time)
,时间格式(datetime.datetime)
import datetime
import time
'''获取当前时间的时间戳'''
print(time.time())
'''获取当前时间的结构体时间'''
print(time.localtime()) #当地时间
print(time.gmtime()) #UTC时间
'''获取当前时间的默认格式化时间'''
print(time.asctime(time.localtime()))
'''获取当前时间的字符串'''
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
'''获取当前时间的时间格式'''
print(datetime.datetime.now())
输出结果
1594723365.6917377
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=42, tm_sec=45, tm_wday=1, tm_yday=196, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=42, tm_sec=45, tm_wday=1, tm_yday=196, tm_isdst=0)
Tue Jul 14 18:42:45 2020
2020-07-14 18:42:45
2020-07-14 18:42:45
2020-07-14 18:42:45.691998
二、各种时间类型的互相转换 A(4,2)=12 种排列组合
时间类型字符串(str),时间戳(float/int),结构体时间(time.struct_time)
,时间格式(datetime.datetime)之间的互转
import datetime
import time
'''1. 时间戳->结构体时间'''
timeStamp = 1594722640
structTime = time.localtime(timeStamp)
print(structTime)
'''2. 结构体时间->时间戳'''
structTime = (2020, 7, 14, 17, 3, 38, 1, 48, 0) #完整的9位元组元素
structTime = time.localtime(1594722640) #结构化的时间
timeStamp = time.mktime(structTime)
print(timeStamp)
'''3. 时间戳->字符串'''
timeStamp = 1594722640
structTime = time.localtime(timeStamp)
strTime = time.strftime('%Y-%m-%d %H:%M:%S',structTime)
print("%s %s" % (type(strTime),strTime))
'''4. 字符串->时间戳'''
strTime = '2020-07-14 18:30:40'
structTime = time.strptime(strTime,'%Y-%m-%d %H:%M:%S')
timeStamp = time.mktime(structTime)
print(timeStamp)
'''5. 时间戳->时间格式'''
timeStamp = 1594722640
structTime = time.localtime(timeStamp)
strTime = time.strftime('%Y-%m-%d %H:%M:%S',structTime)
formatTime = datetime.datetime.strptime(strTime,'%Y-%m-%d %H:%M:%S')
print("%s %s" % (type(formatTime),formatTime))
'''6. 时间格式->时间戳'''
formatTime = datetime.datetime.now()
strTime = datetime.datetime.strftime(formatTime,'%Y-%m-%d %H:%M:%S')
structTime = time.strptime(strTime,'%Y-%m-%d %H:%M:%S')
timeStamp = time.mktime(structTime)
print(timeStamp)
'''7. 结构体时间->字符串'''
structTime = (2020, 7, 14, 17, 3, 38, 1, 48, 0)
strTime = time.strftime('%Y-%m-%d %H:%M:%S',structTime)
print("%s %s" % (type(strTime),strTime))
'''8. 字符串->结构体时间'''
strTime = '2020-07-14 18:30:40'
structTime = time.strptime(strTime,'%Y-%m-%d %H:%M:%S')
print(structTime)
'''9. 时间格式->字符串'''
formatTime = datetime.datetime.now()
strTime = datetime.datetime.strftime(formatTime,'%Y-%m-%d %H:%M:%S')
print("%s %s" % (type(strTime),strTime))
'''10. 字符串->时间格式'''
strTime = '2020-07-14 18:30:40'
formatTime = datetime.datetime.strptime(strTime,'%Y-%m-%d %H:%M:%S')
print("%s %s" % (type(formatTime),formatTime))
'''11. 结构体时间->时间格式'''
structTime = (2020, 7, 14, 17, 3, 38, 1, 48, 0)
strTime = time.strftime('%Y-%m-%d %H:%M:%S',structTime)
formatTime = datetime.datetime.strptime(strTime,'%Y-%m-%d %H:%M:%S')
print("%s %s" % (type(formatTime),formatTime))
'''12. 时间格式->结构体时间'''
formatTime = datetime.datetime.now()
strTime = datetime.datetime.strftime(formatTime,'%Y-%m-%d %H:%M:%S')
structTime = time.strptime(strTime,'%Y-%m-%d %H:%M:%S')
print(structTime)
输出结果
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=30, tm_sec=40, tm_wday=1, tm_yday=196, tm_isdst=0)
1594722640.0
<class 'str'> 2020-07-14 18:30:40
1594722640.0
<class 'datetime.datetime'> 2020-07-14 18:30:40
1594726727.0
<class 'str'> 2020-07-14 17:03:38
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=30, tm_sec=40, tm_wday=1, tm_yday=196, tm_isdst=-1)
<class 'str'> 2020-07-14 19:38:47
<class 'datetime.datetime'> 2020-07-14 18:30:40
<class 'datetime.datetime'> 2020-07-14 17:03:38
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=19, tm_min=38, tm_sec=47, tm_wday=1, tm_yday=196, tm_isdst=-1)
三、时间模块、函数定义
时间元组(time.struct_time)
python中时间元组是一个比较重要的类型,通过时间元组我们可以获取,年月日时分秒,星期几,一年中的第几天等信息
索引|属性|属性含义|属性取值 :---:|:---:|:---:|:---:
0|tm_year|4位数年份|0000-9999 1|tm_mon|月|1-12 2|tm_mday|日|1-31
3|tm_hour|小时|0-23 4|tm_min|分钟|0-59 5|tm_sec|秒|0-61,60、61是闰秒
6|tm_wday|星期几|0-6,0是周一 7|tm_yday|一年的第几天|1到366,366闰年
8|tm_isdst|夏令标识|1-夏令时,0-非夏令时 -1-不确定,可能是因为手动创建
时间格式化
时间格式化是非常常用的一个功能,不管是从字符串到struct_time、date、datetime,还是从struct_time、date、datetime到字符串都需要用到
格式化主要涉及到2个函数:
strftime:str表示字符串,f是format,time是时间,就是时间格式化为字符串
strptime:str表示字符串,p是parse,time是时间,就是字符串解析为时间
格式 含义
%y 两位数的年份表示,00-99
%Y 四位数的年份表示,0000-9999
%m 月份,01-12
%d 日期,0-31
%H 24小时制小时数,0-23
%I 12小时制小时数,01-12
%M 分钟,00-59
%S 秒,00-59
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地日期表示和时间表示
%j 第几天,001-366
%p 本地A.M\P.M
%U 第几周,00-53,星期天为星期的开始
%W 第几周,00-53,星期一为星期的开始
%w 星期几,0-6,星期天为星期的开始
%x 本地日期
%X 本地时间
%Z 当前时区的名称
%% %符合,因为被当做转义字符
time
time模块,主要处理和时间元组(struct_time)的格式化和解析。
当日也有本地化时间、获取时间戳,程序休眠等函数。
注意和datetime.time区分,datetime.time就是一般意义上的日期时间中的时间部分,主要就是时分秒。
datetime
datetime模块中主要使用的是:
datetime.date:日期(2020-01-01)
datetime.time:时间(12:00:00)
datetime.datetime:时期(2020-01-01 12:00:00)
timedelta
time模块delta也是datetime模块下的,主要是用于日期计算的。
在需要使用到时间间隔的时候非常有用,例如需要上一个月,前一天,上一周这样的日期,就可以使用datetime和timedelta很容易得到。
calendar
calendar是日历