python 时间相关函数

python 中与时间处理相关的模块包括 timedatetime、以及 calendar

time 模块

time() 函数:time() 函数用于返回当前时间的时间戳(1970年01月08时00分00秒到现在的浮点秒数)

time() 函数的语法:time.time() //此语句中的第一个 time 指的是 time 模块,该函数参数列表为空

代码:

1 import time
2 
3 print('当前时间的时间戳:%f' % time.time())
View Code

 

localtime([secs]) 函数

localtime() 函数的作用是格式化时间戳为本地 struct_time。如果 secs 参数未输入则默认为当前时间

localtime() 函数语法:time.localtime([secs]) //time指的是 time 模块,可选参数 secs 表示 1970-1-1 到现在的秒数

代码:

1 import time
2 
3 print('time.localtime(): ', time.localtime())
4 # 输出:
5 # time.localtime():  time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=15, tm_min=20, tm_sec=12, tm_wday=1, tm_yday=107, tm_isdst=0)
6 # 最后三个输出的值的含义为 一周的第几日 0 ~ 6(0 是周一),一年中的第几日,夏令时(-1, 0, 1, -1)
View Code

 

gmtime([secs]) 函数

gmtime() 函数用于将一个时间戳转换成 UTC 时区(0 时区)的 struct_time,可选参数 secs 表示 1970-1-1 到现在的秒数,若 secs 参数未输入则默认为当前时间

gmtime() 函数的语法: time.gmtime([secs])

代码:

1 import time
2 
3 print('time.gmtime(): ', time.gmtime())
4 # 输出:
5 # time.gmtime():  time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=7, tm_min=32, tm_sec=54, tm_wday=1, tm_yday=107, tm_isdst=0)
View Code

 

mktime(t) 函数

mktime() 函数用于执行与 gmtime()、localtime() 相反的操作,接收 struct_time 对象作为参数,返回用秒表示时间的浮点数。如果输入不合法的时间则触发 OverflowError 或 ValueError 异常

代码:

1 import time
2 
3 t = (2018, 4, 17, 15, 20, 12, 1, 107, 0);
4 print('time.mktime(t): %f' % time.mktime(t))
5 # 输出:
6 # time.mktime(t): 1523949612.000000
View Code

 

asctime([t]) 函数

asctime() 函数用于接收时间元组(struct_time)并返回一个可读形式为 Tue Apr 17 15:45:13 2018 的 24 个字符的字符串

部输出参数 t 则默认为当前时间点

代码:

1 import time
2 
3 t = time.localtime()
4 print('time.asctime(t): %s' % time.asctime(t))
5 # 输出:
6 # time.asctime(t): Tue Apr 17 15:45:13 2018
View Code

 

ctime([secs]) 函数

ctime 函数用于将一个时间戳转化为 time.asctime() 的形式。若为指定参数 secs 则默认将 time.time() 作为参数

代码:

1 import time
2 
3 print('time.ctime(): %s' % time.ctime())
4 # 输出:
5 # time.ctime(): Tue Apr 17 15:51:00 2018
View Code

 

sleep(secs) 函数

sleep() 函数用于推迟调用线程的运行,可通过参数 secs 指定进程挂起的时间

sleep() 函数语法:time.sleep(escs) //其中 time 是指 time 模块,secs 指推迟执行的秒数,此函数没有返回值

1 import time
2 
3 print('start: %s' % time.ctime())
4 time.sleep(5)
5 print('end: %s' % time.ctime())
6 # 输出:
7 # start: Tue Apr 17 16:00:16 2018
8 # end: Tue Apr 17 16:00:21 2018
View Code

 

clock() 函数

clock() 函数用于以浮点数计算的秒数返回当前 cpu 时间,用来衡量不同程度程序的耗时。该函数在不同的系统上含义不同。在 UNIX 系统上,返回的是 “进程时间”,是用秒表示的浮点数(时间戳)。在 Windows 中,第一次调用返回的是进程运行的实际时间,第二次之后的调用返回的是自第一次调用后到现在的运行时间

代码:

 1 import time
 2 
 3 def procedure():
 4     time.sleep(2)
 5 
 6 #measure process time
 7 procedure()#sleep的时间不算程序运行的时间,sleep()是没有占用cpu
 8 t1 = time.clock()
 9 print(t1)#程序运行的时间
10 procedure()
11 print('seconds process time: ', time.clock())#第一次调用clock到本次调用clock的时间间隔
12 
13 #measure wall time
14 t2 = time.time()
15 procedure()
16 print('seconds wall time: ', time.time() - t2)
17 # 输出:
18 # 0.0
19 # seconds process time:  2.0004229494329526
20 # seconds wall time:  2.000399351119995
View Code

 

strftime(format[, t]) 函数

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

time 指的是 time 模块,format 指格式化字符串,t 指可选的参数,是一个 struct_time 对象

代码:

1 import time
2 
3 t = (2016, 9, 25, 17, 50, 38, 6, 48, 0)
4 t = time.mktime(t)#将 struct_time 转换成浮点秒数
5 print(time.strftime('%b %d %Y %H : %M : %S', time.gmtime(t)))#gmtime()将时间戳转换成0时区struct_time
6 # 输出:
7 # Sep 25 2016 09 : 50 : 38
View Code

 

strptime(string[,  format]) 函数

strptime 函数用于根据指定的格式把一个时间字符串解析成时间元组 struct_time,和 strftime 的作用刚好相反

其中 time 指的是 time 模块,string 指时间字符串,format 指格式化字符串

代码:

1 import time
2 
3 struct_time = time.strptime("25 Sep 16", "%d %b %y")
4 print(struct_time)
5 # 输出:
6 # time.struct_time(tm_year=2016, tm_mon=9, tm_mday=25, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=269, tm_isdst=-1)
View Code

 

datetime 模块

today()

语法:datetime.datetime.today() //其中 datetime.datime 指的是 datetime.datime 类

代码:

1 import datetime
2 
3 print('today is: ', datetime.datetime.today())
4 # 输出:
5 # today is:  2018-04-19 19:38:59.625746
View Code

 

now([tz])

语法: datetime.datetime.now([tz]) // 后去 tz 参数所指时区的本地时间

代码:

1 import datetime
2 
3 print('now is: ', datetime.datetime.now())
4 # 输出:
5 # now is:  2018-04-19 19:42:43.731264
View Code

 

datetime.utcnow()

语法:datetime.datetime.utcnow() //返回一个当前 utc 时间的 datetime 对象

代码:

1 import datetime
2 
3 print('utcnow is: ', datetime.datetime.utcnow())
4 # 输出:
5 # utcnow is:  2018-04-19 11:46:16.801027
View Code

 

fromtimestmap(timestamp[, tz])

根据时间戳创建一个 datetime 对象。其中 tz 指定时区信息。返回一个 datetime 对象

代码:

1 import datetime, time
2 
3 print('fromtimestamp is: ', datetime.datetime.fromtimestamp(time.time()))
4 # 输出:
5 # fromtimestamp is:  2018-04-19 19:50:01.279816
View Code

 

utcfromtimestamp(timestamp)

根据时间戳创建一个 datetime 对象。其中,timestamp 指时间戳,返回一个 datetime 对象

代码:

1 import datetime, time
2 
3 print('utcfromtimestamp is: ', datetime.datetime.utcfromtimestamp(time.time()))
4 # 输出:
5 # utcfromtimestamp is:  2018-04-19 11:54:30.934395
View Code

 

strptime(date_string, format)

将格式字符串转换成 datetime 对象

其中 date_string 指日期字符串,format 为格式化方式,返回一个 datetime 对象

代码:

1 import datetime
2 
3 dt = datetime.datetime.now()
4 print('strptime is: ', dt.strptime(str(dt), '%Y-%m-%d %H:%M:%S.%f'))
5 # 输出:
6 # strptime is:  2018-04-19 20:07:49.020946
View Code

 

strftime(format)

将格式化字符串转换为 datetime 对象

其中 format 为格式化方式

代码:

1 import datetime
2 
3 dt = datetime.datetime.now()
4 print('strftime is:', dt.strftime('%Y-%m-%d %H:%M:%S'))
5 # 输出:
6 # strftime is: 2018-04-19 20:11:17
View Code

 

calendar 模块(日历)

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

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

代码:

 1 import calendar
 2 
 3 print(calendar.calendar(2018, w = 2, l = 1, c = 6))
 4 '''
 5 输出:
 6                                   2018
 7 
 8       January                   February                   March
 9 Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
10  1  2  3  4  5  6  7                1  2  3  4                1  2  3  4
11  8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11
12 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18
13 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25
14 29 30 31                  26 27 28                  26 27 28 29 30 31
15 
16        April                      May                       June
17 Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
18                    1          1  2  3  4  5  6                   1  2  3
19  2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10
20  9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17
21 16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24
22 23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30
23 30
24 
25         July                     August                  September
26 Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
27                    1             1  2  3  4  5                      1  2
28  2  3  4  5  6  7  8       6  7  8  9 10 11 12       3  4  5  6  7  8  9
29  9 10 11 12 13 14 15      13 14 15 16 17 18 19      10 11 12 13 14 15 16
30 16 17 18 19 20 21 22      20 21 22 23 24 25 26      17 18 19 20 21 22 23
31 23 24 25 26 27 28 29      27 28 29 30 31            24 25 26 27 28 29 30
32 30 31
33 
34       October                   November                  December
35 Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
36  1  2  3  4  5  6  7                1  2  3  4                      1  2
37  8  9 10 11 12 13 14       5  6  7  8  9 10 11       3  4  5  6  7  8  9
38 15 16 17 18 19 20 21      12 13 14 15 16 17 18      10 11 12 13 14 15 16
39 22 23 24 25 26 27 28      19 20 21 22 23 24 25      17 18 19 20 21 22 23
40 29 30 31                  26 27 28 29 30            24 25 26 27 28 29 30
41                                                     31
42 '''
View Code

 

calendar.isleap(year)

如果是闰年就返回 True,否则返回 False

代码:

1 import calendar
2 
3 print(calendar.isleap(2018))
4 # 输出:
5 # False
View Code

 

calendar.leapdays(y1, y2)

返回 y1, y2 之间的闰年总数

posted @ 2018-04-19 20:28  geloutingyu  阅读(8371)  评论(0编辑  收藏  举报