python--模块之time,datetime时间模块
time:
表示时间的三种方式:
时间戳、格式化的时间字符串、元组
时间戳是计算机能够识别的时间;
时间字符串是我们能够看懂的时间;
元组是用来操作时间;
导入时间模块
import time
1,时间戳(timastamp):时间戳表示的是从1970年1月1日00:00:00开始来按秒计算的偏移量。我们运行‘type(time.time)’,返回的是float类型
print(time.time())
>>1537960114.8479772
2,格式化的时间字符串(format string):'2019-09-23'
print(time.strftime('%y-%m-%d %X'))
>>18-09-26 19:10:32
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月中的一天(01-31)
%H 24小时制小时数(01-24)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%w 星期(0-6),星期天为星期的开始
%W 一年中星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地日期的时间表示
%% %号的本身
3,元组(struct_time):
localtime将一个时间戳转换为当前时区的struct_time
共有你9个元素:
print(time.localtime())
>>time.struct_time(tm_year=2018, tm_mon=9, tm_mday=26, tm_hour=19, tm_min=12, tm_sec=15, tm_wday=2, tm_yday=269, tm_isdst=0)
tm_year(年) :2018
tm_mon(月) :1-12
tm_mday(日) :1-31
tm_hour(时) :0-23
tm_min(分):0-59
tm_sec(秒) :0-60
tm_wday(一周的第几天):0-6(0表示周一)
tm_yday(一年中的第几天):1-366
tm_isdst(是否夏令时):默认为0
time 时间格式相互转换:
时间戳---》元组时间
time.gmtime(时间戳)
time.localtime(时间戳)
结构化时间---》》时间戳
#time.mktime(结构化时间)
结构化时间---》》字符串时间
#time.strftime("格式定义","结构化时间") 结构化时间参数若不传,则显示当前时间
字符串时间----》》结构化时间
#time.strptime(时间字符串,字符串对应格式)
结构化时间-----》》%a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间)
#如果不传参数,直接返回当前时间的格式化串
时间戳-----》》%a %b %d %H:%M:%S %Y串
时间戳---》元组时间
time.gmtime(时间戳)
time.localtime(时间戳)
import time
print(time.time())
print(time.gmtime(1537960993.1141999))
print(time.localtime())
>>time.struct_time(tm_year=2018, tm_mon=9, tm_mday=26, tm_hour=11, tm_min=23, tm_sec=13, tm_wday=2, tm_yday=269, tm_isdst=0)
>>time.struct_time(tm_year=2018, tm_mon=9, tm_mday=26, tm_hour=19, tm_min=25, tm_sec=20, tm_wday=2, tm_yday=269, tm_isdst=0)
结构化时间---》》时间戳
#time.mktime(结构化时间)
time_tuple = time.localtime(1500000000)
print(time_tuple)
print(time.mktime(time_tuple))
>>time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>1500000000.0
结构化时间---》》字符串时间
#time.strftime("格式定义","结构化时间") 结构化时间参数若不传,则显示当前时间
print(time.strftime("%Y-%m-%d %X"))
print(time.strftime("%Y-%m-%d %X",time.localtime(150000000)))
>>2018-10-11 19:03:29
>>1974-10-03 10:40:00
字符串时间----》》结构化时间
#time.strptime(时间字符串,字符串对应格式)
print(time.strptime("2017-03-16","%Y-%m-%d"))
>>time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
结构化时间-----》》%a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间)
#如果不传参数,直接返回当前时间的格式化串
print(time.asctime(time.localtime(1500000000)))
print(time.asctime())
>>Fri Jul 14 10:40:00 2017
>>Thu Oct 11 19:13:46 2018
时间戳-----》》%a %b %d %H:%M:%S %Y串
#time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串
print(time.ctime())
print(time.ctime(1500000000))
>>Thu Oct 11 19:17:23 2018
>>Fri Jul 14 10:40:00 2017
datetime:
简介:
datetime包是基于time包的一个高级包,datetime可以理解为date和time两个组成部分。date是指年月日构成的日期(相当于日历),time是指时分秒构成的一天24小时中的具体时间(相当于手表)。
datetime.datetime()内有如下属性:
hour:小时
minute:分钟
second:秒
microsecond:微妙
year:年
month:月
day:日
weekday:表示周几
import datetime
t=datetime.datetime(2012,9,3,21,30)
print(t)
>>2012-09-03 21:30:00
运算:
datetime包还定义了时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点(datetime)。
比如:今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔
t=datetime.datetime(2012,9,3,21,30)
t_next=datetime.datetime(2012,9,5,21,30)
delta1=datetime.timedelta(seconds=600)
delta2=datetime.timedelta(weeks=3)
print(t)
print(t+delta1)
print(t+delta2)
print(t_next-t)
>>2012-09-03 21:30:00
>>2012-09-03 21:40:00
>>2012-09-24 21:30:00
>>2 days, 0:00:00
两个datetime对象还可以进行比较。
print(t > t_next)
>>False