在生活中,我们每个人总是和日期、时间打交道。在
Python
中有关于时间的模块来实现。
- calendar
- time
- datatime
calendar
calendar是和日历相关的库,看下具体文档:
>>import calendar
>>dir(calendar)
...(省略部分)
'calendar', # 返回某年的日历
'datetime',
'isleap', # isleap(year) 判断是否是闰年
'month', # 返回某个月份
'leapdays', # leapdays(y1,y2) 返回的是两年之间的闰年总数
'weekday' # weekday(year, month, day)输入参数年月日返回的是星期几
...(省略部分)
data1 = calendar.month(2019, 7) # month ()方法
print(data1)
- month() 返回某个月
- calendar(year, w=2, l=1, c=6):3个月一行,间距为c,每日宽度为w
- isleap(year):判断是否是闰年
-
leapdays(y1, y2):判断两个年份时间中闰年数
time模块
time
模块是非常常用的模块,比如计算某个程序运行的时间长短。
time()
time.time()获取的是当前时间(严格地说是时间戳,以1970年1月1日00:00:00开始计时)。
- timestamp:是指在一连串的数据中心加入辨识文字,如时间或者日期等,用以保障本地端local和远程remote一致。
localtime()
localtime()方法中总共会获取9个数据:
time.localtime()
Out[6]: time.struct_time(tm_year=2019, tm_mon=7, tm_mday=17, tm_hour=23, tm_min=26, tm_sec=30, tm_wday=2, tm_yday=198, tm_isdst=0)
索引 | 属性 | 含义 |
---|---|---|
0 | tm_year | 年 |
1 | tm_mon | 月 |
2 | tm_mday | 日 |
3 | tm_hour | 时 |
4 | tm_min | 分 |
5 | tm_sec | 秒 |
6 | tm_wday | 一周中的第几天 |
7 | tm_yday | 一年中的第几天 |
8 | tm_isdst | 夏令时 |
-
localtime()
方法是有参数的,可以用时间戳来传入,来获取当前的时间。
time.localtime(1000)
Out[7]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=16, tm_sec=40, tm_wday=3, tm_yday=1, tm_isdst=0)
gmtime()
localtime()
得到的是本地时间,gmtime()
得到的是国际化时间。
astime()
- time.astime()的参数为空时,默认是time.localtime()的值为参数,得到的是当前日期、时间和星期。
-
time.astime()的参数必须是元组形式
ctime()
- 不写参数的话,默认和
asctime()
方法相同 - 参数必须是时间戳的格式
time.ctime()
Out[3]: 'Thu Jul 18 22:31:21 2019' # 结果和asctime()
time.ctime(100000)
Out[4]: 'Fri Jan 2 11:46:40 1970' # 参数必须是时间戳形式
mktime()
以时间元组为参数,返回的时间戳格式。
b = time.localtime()
b
Out[6]: time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=22, tm_min=44, tm_sec=34, tm_wday=3, tm_yday=199, tm_isdst=0)
time.mktime(b) # 传入时间元组格式
Out[7]: 1563461074.0 # 返回的是时间戳格式
小结
方法 | 作用 |
---|---|
time() | 得到时间戳 |
localtime() | 得到当地时间;参数是时间戳 结果列表形式,得到时间元组。 时间戳--->时间元祖 |
gmtime() | 国际化时间,结果是时间元组 |
asctime() | 参数为空:默认是time.localtime() 的值为参数若传入参数:必须是 时间元组 |
ctime() | 参数为空:结果和asctime()相同 若传入参数,必须是时间戳形式 |
mktime() | 时间元组为参数,得到的是时间戳。时间元组--->时间戳 |
strftime()
将时间元组按照指定格式转化为字符串,如果不指定时间元组,默认是localtime()的值。时间元组--->字符串
格式 | 含义 | 取值范围(样式) |
---|---|---|
%y | 去掉世纪的年份 | 00-99,如“19” |
%Y | 完整的年份 | 如2019 |
%j | 指定日期是一年中的第几天 | 范围001-366 |
%m | 返回的是月份 | 范围:01-12 |
%b | 本地简化月份的名称 | 简写的英文月份 |
%B | 本地完整月份的名称 | 完整的英文月份 |
%d | 该月的第几日 | 如,5月1日返回的是“01” |
%H | 第几小时,24小时制 | 00-23 |
%l | 第几小时,12小时制 | 00-12 |
%M | 分钟 | 00-59 |
%S | 秒 | 00-59 |
%U | 该年中的第几个星期(周日为一周的起点) | 00-53 |
%W | 同上,周一为起点 | 00-53 |
%w | 一个星期中的第几天 | 0-6 |
%Z | 时区 | 在大陆测试返回的是CST |
%x | 日期 | 日/月/年 |
%X | 时间 | 时:分:秒 |
%c | 详细日期时间 | 日/月/年时:分:秒 |
%% | %字符 | '%'字符 |
%p | 上下午 | AM or PM |
time.strftime("%y-%m-%d")
Out[8]: '19-07-18'
time.strftime("%Y-%m-%d")
Out[9]: '2019-07-18'
time.strftime("%c")
Out[10]: 'Thu Jul 18 23:20:50 2019'
time.strftime("%y-%m-%d-%H-%M-%S")
Out[11]: '19-07-18-23-20-58'
strptime()
将字符串转化为时间元组。参数有两个:一个是字符串,一个是时间字符串所对应的格式(见上表)。字符串--->时间元组
a = time.strftime("%y-%m-%d")
a
Out[15]: '19-07-18'
time.strptime(a, "%y-%m-%d")
Out[16]: time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=199, tm_isdst=-1)
datetime()
- date:日期类,常见的属性:
year/month/day
- time:时间类,常见的属性:
hour/minute/second/microsecond
- datetime:日期时间类
- timedelta:时间间隔,两个时间之间的时间长度
- tzinfo:时区类