Python3时间日志模块time/datetime/calendar

1.time模块

方法

描述

time.time()

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

time.sleep()

推迟调用线程的运行,表示进行挂起的时间(CPU不工作)

time.clock()

返回CPU执行的时间

time.gmtime()

将一个时间戳转换为UTC时区的struct_time元组

time.localtime()

将时间戳转换为本地时间的struct_time元组

time.strftime()

接收时间元组,并返回以可读字符串表示的当地时间,格式由format决定

time.asctime()

接受时间元组并返回一个可读的形式为"周 月 日 时:分:秒 年")的的字符串

time.strptime()

根据指定的格式把一个时间字符串解析为时间元组

time.ctime()

将一个时间戳转换为转换为time.asctime()的形式

time.mktime()

转换为时间戳返回用描述来表示时间的浮点数

1.1 time.time()

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

>>> import time
>>> time.time()
1565112079.3377519

1.2 time.sleep()

推迟调用线程的运行,单位(s)表示进行挂起的时间(CPU不工作),在多线程那块用的较多 

>>> import time
>>> for i in range(3):
...     print("i:>>{}".format(time.ctime(time.time())))
...     time.sleep(3)
... 
i:>>Wed Aug  7 01:24:20 2019              #可以看到每隔3秒打印输出一个变量
i:>>Wed Aug  7 01:24:23 2019
i:>>Wed Aug  7 01:24:26 2019

1.3 time.clock()

返回CPU执行的时间,不太常用,好像新版已被其他方法取代

>>> time.clock()
0.819719

1.4 time.gmtime()

将一个时间戳转换为UTC时区的struct_time元组

>>> import time
>>> time.gmtime(time.time())
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=6, tm_hour=17, tm_min=29, tm_sec=50, tm_wday=1, tm_yday=218, tm_isdst=0)
>>> time.gmtime()                     #不加参数好像默认获取当前时间戳
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=6, tm_hour=17, tm_min=29, tm_sec=54, tm_wday=1, tm_yday=218, tm_isdst=0)

1.5 time.localtime()

将时间戳转换为本地时间的struct_time元组,和UTC时间相差八小时

>>> import time
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=32, tm_sec=8, tm_wday=2, tm_yday=219, tm_isdst=0)
>>> time.localtime(time.time())
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=32, tm_sec=15, tm_wday=2, tm_yday=219, tm_isdst=0)

1.6 time.strftime()

接收时间元组,并返回以可读字符串表示的当地时间,格式由format决定

1. 时间日期格式化符号

  • %y:两位数的年份表示(00-99)
  • %Y:四位数的年份表示(000-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:星期(0-6),星期天为星期的开始
  • %W:一年中的星期数(00-53)星期一为星期的开始
  • %x:本地相应的日期表示
  • %X:本地相应的时间表示
  • %Z:当前时区的名称
  • %%:%号本身
>>> import time
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
'2019-08-07 01:44:52'

1.7 time.strptime()

根据指定的格式把一个时间字符串解析为时间元组

>>> struct_time = time.strptime('2019-08-07 01:48:16', '%Y-%m-%d %H:%M:%S')
>>> struct_time
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=1, tm_min=48, tm_sec=16, tm_wday=2, tm_yday=219, tm_isdst=-1)

1.8 time.asctime()

接受时间元组并返回一个可读的形式为"周 月 日 时:分:秒 年")的的字符串

>>> import time
>>> time.asctime(time.localtime())
'Wed Aug  7 01:39:00 2019'
>>> time.asctime((2019, 8, 7, 1, 39, 38, 2, 46, 0))
'Wed Aug  7 01:39:38 2019'

1.9 time.ctime()

将一个时间戳转换为转换为time.asctime()的形式

>>> import time
>>> time.ctime()
'Wed Aug  7 01:39:57 2019'
>>> time.ctime(time.time())
'Wed Aug  7 01:40:00 2019'

1.10 time.mktime()

转换为时间戳返回用描述来表示时间的浮点数

>>> import time
>>> time.mktime(time.localtime())
1565113310.0
>>> time.mktime((2019, 8, 7, 1, 42, 38, 2, 46, 0))
1565113358.0

2. datetime模块

datetime相比time进行了封装,提供了更多的函数,更容易调用。常用的类有

类名 描述
datetime 日期时间对象
date 日期对象,由year(年)、month(月)、day(日)三部分组成
time 时间对象,由hour(时)、minute(分)、second(秒)、microsecond(毫秒)、tzinfo五部分组成 
timedelta 时间间隔,用于计算时间的跨度
tzinfo 时区信息对象

2.1 date类

日期对象,由year(年)、month(月)、day(日)三部分组成

>>> d = datetime.date.today()
>>> d
datetime.date(2019, 8, 7)
>>> d.year                        #等价于d.__getattribute__('year')
2019
>>> d.month                       #等价于d.__getattribute__('month')
8
>>> d.day                         #等价于d.__getattribute__('day')
7

2.2 time类

时间对象,由hour(时)、minute(分)、second(秒)、microsecond(毫秒)、tzinfo五部分组成 

>>> d = datetime.time(2, 47, 59, 899)
>>> d
datetime.time(2, 47, 59, 899)
>>> d.hour                             #等价于d.__getattribute__('hour')
2
>>> d.minute                           #等价于d.__getattribute__('minute')
47
>>> d.second                           #等价于d.__getattribute__('second')
59
>>> d.microsecond                      #等价于d.__getattribute__('microsecond')
899
>>> d.tzinfo                           #等价于d.__getattribute__('tzinfo')
>>>  

2.3 datetime类

日期时间对象,可以看成date类和time类的组合。、

1. datetime.datetime.now(tz=None)

返回当前日期时间的datetime对象。若tz=None,等于datetime.today().若指定tz,则返回带tzinfo的datetime对象

>>> import datetime
>>> d = datetime.datetime.now()
>>> print(d)
2019-08-07 02:11:07.902924

2. datetime.datetime.combine()

将一个date对象和一个time对象合并生成一个datetime对象

>>> import datetime
>>> d = datetime.date(2019, 8, 7)
>>> t = datetime.time(2, 48 , 59, 1234)
>>> datetime.datetime.combine(d, t)
datetime.datetime(2019, 8, 7, 2, 48, 59, 1234)

3. datetime.datetime.today()

返回一个datetime对象

>>> datetime.datetime.today()
datetime.datetime(2019, 8, 7, 2, 14, 47, 946324)

4. datetime.datetime.utcnow()

返回一个tz为None的UTC时间的datetime对象

>>> import datetime
>>> datetime.datetime.utcnow()
datetime.datetime(2019, 8, 6, 18, 16, 56, 634938)

5. datetime.datetime.srptime()

返回一个格式化的datetime对象

>>> import datetime
>>> datetime.datetime.strptime('2019-07-08 02:49:33', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2019, 7, 8, 2, 49, 33)

3. calendar模块

3.1 calendar.calendar()

该方法返回某年的日历

>>> import calendar
>>> calendar.calendar(2019)
                                   2019

      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  6                   1  2  3                   1  2  3
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
28 29 30 31               25 26 27 28               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  6  7             1  2  3  4  5                      1  2
 8  9 10 11 12 13 14       6  7  8  9 10 11 12       3  4  5  6  7  8  9
15 16 17 18 19 20 21      13 14 15 16 17 18 19      10 11 12 13 14 15 16
22 23 24 25 26 27 28      20 21 22 23 24 25 26      17 18 19 20 21 22 23
29 30                     27 28 29 30 31            24 25 26 27 28 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  6  7                1  2  3  4                         1
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       2  3  4  5  6  7  8
15 16 17 18 19 20 21      12 13 14 15 16 17 18       9 10 11 12 13 14 15
22 23 24 25 26 27 28      19 20 21 22 23 24 25      16 17 18 19 20 21 22
29 30 31                  26 27 28 29 30 31         23 24 25 26 27 28 29
                                                    30

      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  5  6                   1  2  3                         1
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
                                                    30 31

3.2 calendar.month()

该方法返回某年某月的日历

>>> import calendar
>>> calendar.month(2019, 8)
    August 2019
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 30 31

3.3 calendar.isleap()

该方法用来判断某年是不是闰年

>>> import calendar
>>> calendar.isleap(2019)
False
>>> calendar.isleap(2020)
True

3.4 calendar.timegm()

该方法将一个本地时间的struct_time元组转换为时间戳返回

>>> import time
>>> import calendar
>>> calendar.timegm(time.localtime())
1565143691

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章