python 时间模块 time datetime 常用函数

有时候写代码需要来回查文档,比如经常用到的time,每次都要自己百度或者谷歌一下,比较麻烦,所以自己总结一下,比较好:

1.time,datetime 得到当前时间

Python
In [27]: import <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/time" title="View all posts in time" target="_blank">time</a></span> # 获取当前时间的时间戳 In [28]: <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/time" title="View all posts in time" target="_blank">time</a></span>.time() Out[28]: 1508220679.3047621 #利用 time.localtime 把时间戳转换成 struct_time 元组 In [29]: time.localtime(time.time()) Out[29]: time.struct_time(tm_year=2017, tm_mon=10, tm_mday=17, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=1, tm_yday=290, tm_isdst=0) In [30]: ne = time.localtime(time.time()) #strftime 把struct_time 格式化 In [31]: time.strftime("%Y:%m:%d",ne) Out[31]: '2017:10:17' # 如果不加参数,则输出 当前时间 In [32]: time.strftime('%Y-%m-%d %H:%M:%S') Out[32]: '2017-10-17 14:14:46' In [34]: import <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/datetime" title="View all posts in datetime" target="_blank">datetime</a></span> #<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/datetime" title="View all posts in datetime" target="_blank">datetime</a></span> 获取当前时间 In [35]: <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/datetime" title="View all posts in datetime" target="_blank">datetime</a></span>.<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/date" title="View all posts in date" target="_blank">date</a></span>time.now() Out[35]: <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/date" title="View all posts in date" target="_blank">date</a></span>time.<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/date" title="View all posts in date" target="_blank">date</a></span>time(2017, 10, 17, 14, 16, 25, 272798) #datetime 当前时间字符串格式化 In [36]: datetime.datetime.now().strftime("%Y") Out[36]: '2017' In [46]: datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') Out[46]: '2014-08-15 09:45:27’ In [47]: datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S') Out[47]: '2014-08-15 09:46:10'
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
In [ 27 ] : import time
# 获取当前时间的时间戳
In [ 28 ] : time . time ( )
Out [ 28 ] : 1508220679.3047621
#利用 time.localtime 把时间戳转换成 struct_time 元组
In [ 29 ] : time . localtime ( time . time ( ) )
Out [ 29 ] : time . struct_time ( tm_year = 2017 , tm_mon = 10 , tm_mday = 17 , tm_hour = 14 , tm_min = 12 , tm_sec = 0 , tm_wday = 1 , tm_yday = 290 , tm_isdst = 0 )
 
In [ 30 ] : ne = time . localtime ( time . time ( ) )
#strftime  把struct_time 格式化
In [ 31 ] : time . strftime ( "%Y:%m:%d" , ne )
Out [ 31 ] : '2017:10:17'
# 如果不加参数,则输出 当前时间
In [ 32 ] : time . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 32 ] : '2017-10-17 14:14:46'
 
In [ 34 ] : import datetime
 
#datetime 获取当前时间
In [ 35 ] : datetime . datetime . now ( )
Out [ 35 ] : datetime . datetime ( 2017 , 10 , 17 , 14 , 16 , 25 , 272798 )
 
#datetime 当前时间字符串格式化
In [ 36 ] : datetime . datetime . now ( ) . strftime ( "%Y" )
Out [ 36 ] : '2017'
 
In [ 46 ] : datetime . datetime . now ( ) . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 46 ] : '2014-08-15 09:45:27’
 
In [47]: datetime.datetime.today().strftime(' % Y - % m - % d % H : % M : % S ')
Out[47]: ' 2014 - 08 - 15 09 : 46 : 10'

2.time,datetime 计算时间差值

Python
使用time模块: In [75]: def t(): ....: start = time.time() ....: time.sleep(10) ....: end = time.time() ....: print end - start ....: In [76]: t() 10.0014948845 使用datetime模块: In [49]: starttime = datetime.datetime.now() In [50]: endtime = datetime.datetime.now() In [51]: print (endtime - starttime).seconds 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
使用 time模块:
In [ 75 ] : def t ( ) :
   . . . . :      start = time . time ( )
   . . . . :      time . sleep ( 10 )
   . . . . :      end = time . time ( )
   . . . . :      print end - start
   . . . . :
 
In [ 76 ] : t ( )
10.0014948845
 
使用 datetime模块:
In [ 49 ] : starttime = datetime . datetime . now ( )
In [ 50 ] : endtime = datetime . datetime . now ( )
In [ 51 ] : print ( endtime - starttime ) . seconds
6

3.time,datetime 时间加减

Python
In [37]: #计算昨天的日期 In [38]: datetime.datetime.now() Out[38]: datetime.datetime(2017, 10, 17, 14, 38, 20, 245271) In [39]: datetime.datetime.now() + datetime.timedelta(-1) Out[39]: datetime.datetime(2017, 10, 16, 14, 38, 55, 277617) # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925 # print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19 # print(datetime.datetime.now() ) # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天 # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
In [ 37 ] : #计算昨天的日期
 
In [ 38 ] : datetime . datetime . now ( )
Out [ 38 ] : datetime . datetime ( 2017 , 10 , 17 , 14 , 38 , 20 , 245271 )
 
In [ 39 ] : datetime . datetime . now ( ) + datetime . timedelta ( - 1 )
Out [ 39 ] : datetime . datetime ( 2017 , 10 , 16 , 14 , 38 , 55 , 277617 )
 
# print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
# print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

4.time,datetime 时间元组转换成时间戳

Python
In [56]: datetime.datetime.now() Out[56]: datetime.datetime(2014, 8, 15, 9, 57, 52, 779893) # 转化成时间元组 In [57]: datetime.datetime.now().timetuple() Out[57]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=9, tm_min=58, tm_sec=12, tm_wday=4, tm_yday=227, tm_isdst=-1) In [58]: time.mktime(datetime.datetime.now().timetuple()) Out[58]: 1408067904.0 #时间戳转换成时间元组 struct_time In [40]: dd = time.localtime(time.time()) 时间元组转换成时间戳 In [41]: time.mktime(dd) Out[41]: 1508224699.0 In [42]: dd Out[42]: time.struct_time(tm_year=2017, tm_mon=10, tm_mday=17, tm_hour=15, tm_min=18, tm_sec=19, tm_wday=1, tm_yday=290, tm_isdst=0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
In [ 56 ] : datetime . datetime . now ( )
Out [ 56 ] : datetime . datetime ( 2014 , 8 , 15 , 9 , 57 , 52 , 779893 )
# 转化成时间元组
In [ 57 ] : datetime . datetime . now ( ) . timetuple ( )
Out [ 57 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 15 , tm_hour = 9 , tm_min = 58 , tm_sec = 12 , tm_wday = 4 , tm_yday = 227 , tm_isdst = - 1 )
 
In [ 58 ] : time . mktime ( datetime . datetime . now ( ) . timetuple ( ) )
Out [ 58 ] : 1408067904.0
 
#时间戳转换成时间元组 struct_time
In [ 40 ] : dd = time . localtime ( time . time ( ) )
 
时间元组转换成时间戳
In [ 41 ] : time . mktime ( dd )
Out [ 41 ] : 1508224699.0
 
In [ 42 ] : dd
Out [ 42 ] : time . struct_time ( tm_year = 2017 , tm_mon = 10 , tm_mday = 17 , tm_hour = 15 , tm_min = 18 , tm_sec = 19 , tm_wday = 1 , tm_yday = 290 , tm_isdst = 0 )

5.strptime也挺有用的,将时间字符串转换为时间元组struct_time

Python
In [73]: time.strftime('%Y-%m-%d %H:%M:%S') Out[73]: '2014-08-15 10:27:36' In [74]: time.strptime('2014-08-15 10:27:36','%Y-%m-%d %H:%M:%S') Out[74]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=27, tm_sec=36, tm_wday=4, tm_yday=227, tm_isdst=-1)
1
2
3
4
5
In [ 73 ] : time . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 73 ] : '2014-08-15 10:27:36'
 
In [ 74 ] : time . strptime ( '2014-08-15 10:27:36' , '%Y-%m-%d %H:%M:%S' )
Out [ 74 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 15 , tm_hour = 10 , tm_min = 27 , tm_sec = 36 , tm_wday = 4 , tm_yday = 227 , tm_isdst = - 1 )

##二:time和datetime模块常用方法简介

Python
表示时间的两种方式: 1. 时间戳(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 2. 时间元组 即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同 time 模块常用方法小记 1.time.clock() 这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间 戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32 上QueryPerformanceCounter()为基础,它比毫秒表示更为精确) budong@budongdeMacBook-Pro:/tmp$ cat clock.py #!/usr/bin/env <span class="wp_keywordlink"><a href="http://www.168seo.cn/python" title="python">python</a></span> import time if __name__ == '__main__': time.sleep(1) print "clock1:%s" % time.clock() time.sleep(1) print "clock2:%s" % time.clock() time.sleep(1) print "clock3:%s" % time.clock() 运行脚本: budong@budongdeMacBook-Pro:/tmp$ ./clock.py clock1:0.059173 clock2:0.059299 clock3:0.059416 2.time.sleep(secs) 线程推迟指定的时间运行 适合放在脚本里,定时sleep一会然后继续干啥 In [138]: while True: .....: time.sleep(3) .....: print time.strftime('%H:%M:%S') .....: 17:21:35 17:21:38 17:21:41 17:21:44 …… 3.time.localtime([secs]) 将一个时间戳转换成一个当前时区的struct_time,如果seconds参数未输入,则以当前时间为转换标准 未提供secs参数时,按当前时间为准 In [141]: time.localtime() Out[141]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=17, tm_min=23, tm_sec=48, tm_wday=3, tm_yday=226, tm_isdst=0) 提供secs为当前时间戳时 In [142]: time.time() Out[142]: 1408008232.217969 In [143]: time.localtime(time.time()) Out[143]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=17, tm_min=24, tm_sec=2, tm_wday=3, tm_yday=226, tm_isdst=0) 4.time.strftime(format[, t]) 将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出 t未指定,传入time.localtime()作为默认参数: In [156]: time.strftime('%Y-%m-%d %H:%M:%S') Out[156]: '2014-08-14 17:28:16’ 指定t为time.localtime(1407945600.0)时: In [157]: time.localtime(1407945600.0) Out[157]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=0) In [158]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1407945600.0)) Out[158]: '2014-08-14 00:00:00’ 5.time.time() 返回当前时间的时间戳 In [161]: time.time() Out[161]: 1408008711.730218 6.time.mktime(t) 将一个struct_time转换为时间戳,如下time.localtime接收一个时间戳返回一个struct_time,而time.mktime接收一个struct_time,返回一个时间戳 In [159]: time.localtime(1407945600.0) Out[159]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=0) In [160]: time.mktime(time.localtime(1407945600.0)) Out[160]: 1407945600.0 datetime模块常用的主要有下面这四个类: 1. datetime.date: 是指年月日构成的日期(相当于日历) 2. datetime.time: 是指时分秒微秒构成的一天24小时中的具体时间(相当于手表) 3. datetime.datetime: 上面两个合在一起,既包含时间又包含日期 4. datetime.timedelta: 时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点(datetime)。比如今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔。 1.datetime.date 类 1.新建一个date对象,日期为今天,既可以直接调用datetime.date.today(),也可以直接向datetime.date()传值,如下: In [4]: today = datetime.date.today() In [5]: today Out[5]: datetime.date(2014, 8, 15) In [6]: t = datetime.date(2014,8,15) In [7]: t Out[7]: datetime.date(2014, 8, 15) 2.datetime.date.strftime(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式 In [8]: today.strftime('%Y-%m-%d %H:%M:%S') Out[8]: '2014-08-15 00:00:00’ date对象中小时、分钟、秒默认都是0,纪元年的那个时间 3.datetime.date.timple() 转成struct_time格式,这样传递给time.mktime(t) 后,直接转成时间戳格式 In [9]: today.timetuple() Out[9]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=227, tm_isdst=-1) In [10]: time.mktime(today.timetuple()) Out[10]: 1408032000.0 4.datetime.date.replace(year, month, day) 返回一个替换后的date对象 In [11]: today.replace(year=2013) Out[11]: datetime.date(2013, 8, 15) 5.datetime.date.fromtimestamp(timestamp) 将时间戳转化为date对象 In [12]: datetime.date.fromtimestamp(1408058729) Out[12]: datetime.date(2014, 8, 15) 2.datetime.time 类 1.新建一个time对象 In [15]: t Out[15]: datetime.time(8, 45, 20) 2.datetime.time.(format)格式化输出 In [16]: t.strftime('%Y-%m-%d %H:%M:%S') Out[16]: '1900-01-01 08:45:20’ time对应的年、月、日为1900、01、01,纪元年的那个时间 3.datetime.time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]) 返回一个替换后的time对象 In [17]: t.replace(hour=9) Out[17]: datetime.time(9, 45, 20) 3.datetime.datetime类 其实和date的那些方法差不多了,大概看以下,简单说说 1.新建一个datetime对象,日期为今天,既可以直接调用datetime.datetime.today(),也可以直接向datetime.datetime()传值,如下: In [21]: d1 = datetime.datetime.today() In [22]: d1 Out[22]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) In [23]: d2 = datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) In [24]: d2 Out[24]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) 2.datetime.datetime.now([tz]) 当不指定时区时,和datetime.datetime.today()是一样的结果,如下 In [25]: datetime.datetime.now() Out[25]: datetime.datetime(2014, 8, 15, 8, 14, 50, 738672) 3..datetime.datetime.strftime(format) 格式化为需要的时间,如常用的 “年-月-日 小时:分钟:秒” 格式 In [27]: d1 Out[27]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) In [28]: d1.strftime('%Y-%m-%d %H:%M:%S') Out[28]: '2014-08-15 08:12:34’ 4.datetime.datetime.timple() 转成struct_time格式,这样传递给time.mktime(t) 后,直接转成时间戳格式 In [29]: d1 Out[29]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) In [30]: d1.timetuple() Out[30]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=8, tm_min=12, tm_sec=34, tm_wday=4, tm_yday=227, tm_isdst=-1) In [31]: time.mktime(d1.timetuple()) Out[31]: 1408061554.0 5.datetime.datetime.replace(year, month, day) 返回一个替换后的date对象 In [32]: d1 Out[32]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945) In [33]: d1.replace(year=2000) Out[33]: datetime.datetime(2000, 8, 15, 8, 12, 34, 790945) 6.datetime.datetime.fromtimestamp(timestamp) 将时间戳转化为datetime对象 In [34]: time.time() Out[34]: 1408061894.081552 In [35]: datetime.datetime.fromtimestamp(1408061894) Out[35]: datetime.datetime(2014, 8, 15, 8, 18, 14) 4.datetime.timedelta类 没啥好说的,主要做时间的加减法用,如下: In [78]: today = datetime.datetime.today() In [79]: yesterday = today - datetime.timedelta(days=1) In [80]: yesterday Out[80]: datetime.datetime(2014, 8, 14, 15, 8, 25, 783471) In [81]: today Out[81]: datetime.datetime(2014, 8, 15, 15, 8, 25, 783471)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
表示时间的两种方式:
 
1. 时间戳 (相对于 1970.1.1 00 : 00 : 00以秒计算的偏移量 ) ,时间戳是惟一的
2. 时间元组 即 ( struct_time ) ,共有九个元素,分别表示,同一个时间戳的 struct _time会因为时区不同而不同
time 模块常用方法小记
 
1.time.clock()
 
这个需要注意,在不同的系统上含义不同。在 UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间 戳)。而在 WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以 WIN32 上 QueryPerformanceCounter ( )为基础,它比毫秒表示更为精确)
 
budong @ budongdeMacBook - Pro : / tmp $ cat clock . py
#!/usr/bin/env python
import time
if __name__ == '__main__' :
time . sleep ( 1 )
print "clock1:%s" % time . clock ( )
time . sleep ( 1 )
print "clock2:%s" % time . clock ( )
time . sleep ( 1 )
print "clock3:%s" % time . clock ( )
 
运行脚本:
budong @ budongdeMacBook - Pro : / tmp $ . / clock . py
clock1 : 0.059173
clock2 : 0.059299
clock3 : 0.059416
2.time.sleep ( secs )
 
线程推迟指定的时间运行
适合放在脚本里,定时 sleep一会然后继续干啥
 
In [ 138 ] : while True :
. . . . . : time . sleep ( 3 )
. . . . . : print time . strftime ( '%H:%M:%S' )
. . . . . :
17 : 21 : 35
17 : 21 : 38
17 : 21 : 41
17 : 21 : 44
……
3.time.localtime ( [ secs ] )
 
将一个时间戳转换成一个当前时区的 struct _time,如果 seconds参数未输入,则以当前时间为转换标准
未提供 secs参数时,按当前时间为准
In [ 141 ] : time . localtime ( )
Out [ 141 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 14 , tm_hour = 17 , tm_min = 23 , tm_sec = 48 , tm_wday = 3 , tm_yday = 226 , tm_isdst = 0 )
 
提供 secs为当前时间戳时
In [ 142 ] : time . time ( )
Out [ 142 ] : 1408008232.217969
In [ 143 ] : time . localtime ( time . time ( ) )
Out [ 143 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 14 , tm_hour = 17 , tm_min = 24 , tm_sec = 2 , tm_wday = 3 , tm_yday = 226 , tm_isdst = 0 )
4.time.strftime ( format [ , t ] )
 
将指定的 struct_time (默认为当前时间 ),根据指定的格式化字符串输出
t未指定,传入 time . localtime ( )作为默认参数:
In [ 156 ] : time . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 156 ] : '2014-08-14 17:28:16’
 
指定t为time.localtime(1407945600.0)时:
In [157]: time.localtime(1407945600.0)
Out[157]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=0)
 
In [158]: time.strftime(' % Y - % m - % d % H : % M : % S ',time.localtime(1407945600.0))
Out[158]: ' 2014 - 08 - 14 00 : 00 : 00’
5.time.time()
 
返回当前时间的时间戳
In [ 161 ] : time . time ( )
Out [ 161 ] : 1408008711.730218
6.time.mktime ( t )
 
将一个 struct _time转换为时间戳 ,如下 time . localtime接收一个时间戳返回一个 struct _time,而 time . mktime接收一个 struct _time,返回一个时间戳
In [ 159 ] : time . localtime ( 1407945600.0 )
Out [ 159 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 14 , tm_hour = 0 , tm_min = 0 , tm_sec = 0 , tm_wday = 3 , tm_yday = 226 , tm_isdst = 0 )
In [ 160 ] : time . mktime ( time . localtime ( 1407945600.0 ) )
Out [ 160 ] : 1407945600.0
 
datetime模块常用的主要有下面这四个类:
 
1. datetime . date : 是指年月日构成的日期 (相当于日历 )
2. datetime . time : 是指时分秒微秒构成的一天 24小时中的具体时间 (相当于手表 )
3. datetime . datetime : 上面两个合在一起,既包含时间又包含日期
4. datetime . timedelta : 时间间隔对象 ( timedelta )。一个时间点 ( datetime )加上一个时间间隔 ( timedelta )可以得到一个新的时间点 ( datetime )。比如今天的上午 3点加上 5个小时得到今天的上午 8点。同理,两个时间点相减会得到一个时间间隔。
1.datetime.date 类
 
1.新建一个 date对象,日期为今天,既可以直接调用 datetime . date . today ( ),也可以直接向 datetime . date ( )传值,如下:
In [ 4 ] : today = datetime . date . today ( )
In [ 5 ] : today
Out [ 5 ] : datetime . date ( 2014 , 8 , 15 )
In [ 6 ] : t = datetime . date ( 2014 , 8 , 15 )
In [ 7 ] : t
Out [ 7 ] : datetime . date ( 2014 , 8 , 15 )
 
2.datetime.date.strftime ( format ) 格式化为需要的时间,如常用的 “年 -月 -日 小时:分钟:秒” 格式
In [ 8 ] : today . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 8 ] : '2014-08-15 00:00:00’
date对象中小时、分钟、秒默认都是0,纪元年的那个时间
 
3.datetime.date.timple() 转成struct_time格式,这样传递给time.mktime(t) 后,直接转成时间戳格式
In [9]: today.timetuple()
Out[9]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=227, tm_isdst=-1)
In [10]: time.mktime(today.timetuple())
Out[10]: 1408032000.0
 
4.datetime.date.replace(year, month, day) 返回一个替换后的date对象
In [11]: today.replace(year=2013)
Out[11]: datetime.date(2013, 8, 15)
 
5.datetime.date.fromtimestamp(timestamp) 将时间戳转化为date对象
In [12]: datetime.date.fromtimestamp(1408058729)
Out[12]: datetime.date(2014, 8, 15)
2.datetime.time 类
 
1.新建一个time对象
In [15]: t
Out[15]: datetime.time(8, 45, 20)
 
2.datetime.time.(format)格式化输出
In [16]: t.strftime(' % Y - % m - % d % H : % M : % S ')
Out[16]: ' 1900 - 01 - 01 08 : 45 : 20’
time对应的年、月、日为 1900、 01、 01,纪元年的那个时间
 
3.datetime.time.replace ( [ hour [ , minute [ , second [ , microsecond [ , tzinfo ] ] ] ] ] ) 返回一个替换后的 time对象
In [ 17 ] : t . replace ( hour = 9 )
Out [ 17 ] : datetime . time ( 9 , 45 , 20 )
3.datetime.datetime类
 
其实和 date的那些方法差不多了,大概看以下,简单说说
1.新建一个 datetime对象,日期为今天,既可以直接调用 datetime . datetime . today ( ),也可以直接向 datetime . datetime ( )传值,如下:
In [ 21 ] : d1 = datetime . datetime . today ( )
In [ 22 ] : d1
Out [ 22 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
In [ 23 ] : d2 = datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
In [ 24 ] : d2
Out [ 24 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
 
2.datetime.datetime.now ( [ tz ] ) 当不指定时区时,和 datetime . datetime . today ( )是一样的结果,如下
In [ 25 ] : datetime . datetime . now ( )
Out [ 25 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 14 , 50 , 738672 )
 
3..datetime.datetime.strftime ( format ) 格式化为需要的时间,如常用的 “年 -月 -日 小时:分钟:秒” 格式
In [ 27 ] : d1
Out [ 27 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
In [ 28 ] : d1 . strftime ( '%Y-%m-%d %H:%M:%S' )
Out [ 28 ] : ' 2014 - 08 - 15 08 : 12 : 34’
 
4.datetime.datetime.timple ( ) 转成 struct _time格式,这样传递给 time . mktime ( t ) 后,直接转成时间戳格式
In [ 29 ] : d1
Out [ 29 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
In [ 30 ] : d1 . timetuple ( )
Out [ 30 ] : time . struct_time ( tm_year = 2014 , tm_mon = 8 , tm_mday = 15 , tm_hour = 8 , tm_min = 12 , tm_sec = 34 , tm_wday = 4 , tm_yday = 227 , tm_isdst = - 1 )
In [ 31 ] : time . mktime ( d1 . timetuple ( ) )
Out [ 31 ] : 1408061554.0
 
5.datetime.datetime.replace ( year , month , day ) 返回一个替换后的 date对象
In [ 32 ] : d1
Out [ 32 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 12 , 34 , 790945 )
In [ 33 ] : d1 . replace ( year = 2000 )
Out [ 33 ] : datetime . datetime ( 2000 , 8 , 15 , 8 , 12 , 34 , 790945 )
 
6.datetime.datetime.fromtimestamp ( timestamp ) 将时间戳转化为 datetime对象
In [ 34 ] : time . time ( )
Out [ 34 ] : 1408061894.081552
In [ 35 ] : datetime . datetime . fromtimestamp ( 1408061894 )
Out [ 35 ] : datetime . datetime ( 2014 , 8 , 15 , 8 , 18 , 14 )
4.datetime.timedelta类
 
没啥好说的,主要做时间的加减法用,如下:
In [ 78 ] : today = datetime . datetime . today ( )
In [ 79 ] : yesterday = today - datetime . timedelta ( days = 1 )
In [ 80 ] : yesterday
Out [ 80 ] : datetime . datetime ( 2014 , 8 , 14 , 15 , 8 , 25 , 783471 )
In [ 81 ] : today
Out [ 81 ] : datetime . datetime ( 2014 , 8 , 15 , 15 , 8 , 25 , 783471 )



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值