python—时间(time)和日期(calendar)模块


Python 提供了一个 timecalendar 模块可以用于格式化日期和时间。

时间间隔是以为单位的浮点小数
每个时间戳(secs)都以自从1970年1月1日午夜(历元)经过了多长时间来表示。

struct_time元组

很多Python函数用一个元组装起来的9组数字处理时间,也就是struct_time元组。这种结构具有如下属性:
在这里插入图片描述


python中时间日期格式化符号:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m月份(01-12)
  • %d 月内中的一天(0-31)
  • %H24小时制小时数(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 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

时间(Time)模块

在这里插入图片描述

1、time.time()

返回当前时间的时间戳(secs)(1970纪元后经过的浮点秒数)。

import time
print(time.time()) #输出1580462925.8417437

时间戳可用于time()模板的其他函数,localtime,gmtime,sleep等等

2、time.localtime()

接收时间戳,并返回时间戳的当地时间下的时间元组。若参数为空,返回当地时间下的时间元组

import time
secs=time.time() #时间戳
print(time.localtime()) #参数为空,返回当地时间的当前时间元组
print(time.localtime(secs)) #返回指定时间戳的当地时间的时间元组

3、time.gmtime()

接收时间戳返回格林威治天文时间下的时间元组

import time
secs=time.time() #时间戳
print(time.localtime(secs)) 
print(time.gmtime(secs))

locatime()和gmtime()接受的同一个时间戳(secs),返回的时间元组却不一样,这就是时差导致的

4、time.asctime([tupletime])与 time.strftime(fmt[,tupletime])

time.asctime([tupletime]):接受时间元组并返回一个可读的形式为”Tue Dec 11 18:07:14 2008”(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
time.strftime(fmt[,tupletime]):接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
两者的区别就是格式不一样,第二个函数格式由fmt决定

import time
secs=time.time() #时间戳
a=time.localtime(secs) #当地时间的时间元组
b=time.gmtime(secs) #格林威治时间的时间元组

print(time.asctime(a)) #获得时间的字符串
print(time.asctime(b)) #获得时间的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S',a)) #获得格式化(指定格式)的时间字符串

运行结果:

Fri Jan 31 17:45:24 2020
Fri Jan 31 09:45:24 2020
2020-01-31 17:45:24

5、time.sleep()

推迟调用线程的运行

import time
print('start:',time.ctime())
time.sleep(5) #从这一行推迟5秒进程
print('end:',time.ctime())

在这里插入图片描述


日期(Calendar)模块

在这里插入图片描述
在这里插入图片描述

1、calendar.calendar(year,w=2,l=1,c=6)

返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。

import calendar
print(calendar.calendar(2020,w=2,l=1,c=6))

运行结果:

        2020

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2          1  2  3  4  5  6
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
                          31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30


进程已结束,退出代码0

2、calendar.firstweekday( )

返回当前每周起始日期的设置。默认情况下,首次载入 calendar 模块时返回 0,即星期一。

import calendar
print(calendar.firstweekday()) #输出0

3、calendar.isleap(year)

闰年返回 True,否则为 False。

import calendar
print(calendar.isleap(2020)) #输出True

4、calendar.leapdays(y1,y2)

返回在Y1,Y2两年之间的闰年总数

import calendar
print(calendar.leapdays(2020,2100)) #输出20

5、calendar.month(year,month,w=2,l=1)

返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

import calendar
print(calendar.month(2020,2,w=1,l=1)) 

运行结果:

February 2020
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29

6、calendar.monthcalendar(year,month)

返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

import calendar
print(calendar.monthcalendar(2020,2))

运行结果:
在这里插入图片描述

7、calendar.monthrange(year,month)

返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

import calendar
print(calendar.monthrange(2020,5)) #输出(4, 31)

8、calendar.prcal(year,w=2,l=1,c=6)

相当于 print calendar.calendar(2020,w=2,l=1,c=6)。

import calendar
calendar.prcal(2020,w=2,l=1,c=6)

9、calendar.prmonth(year,month,w=2,l=1)

相当于 print calendar.month(2020,2,w=2,l=1) 。

import calendar
calendar.prmonth(2020,2,w=3,l=1)

10、calendar.setfirstweekday(weekday)

设置每周的起始日期码。0(星期一)到6(星期日)

import calendar
calendar.setfirstweekday(3)
print(calendar.firstweekday()) #输出3,若没有第二条语句,则输出0

11、calendar.timegm(tupletime)

和time.gmtime相反:接受一个时间元组形式返回该时刻的时间戳(1970纪元后经过的浮点秒数)。

import calendar
import time
a=time.time()
print('gmtime:',time.gmtime(a))#gmtime用法
tupletime = (2020, 1, 31, 16, 34, 30)
print(calendar.timegm(tupletime))#timegm用法

12、calendar.weekday(year,month,day)

import calendar
print(calendar.weekday(2020,1,31)) #输出4,2020年1月31日是周五

其他相关模块和函数

在Python中,其他处理日期和时间的模块还有:

  • datetime模块
  • pytz模块
  • dateutil模块
发布了33 篇原创文章 · 获赞 81 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wmy0217_/article/details/104122308