python 时间模块(time与datetime模块)用法示例

发布时间:2019-10-01编辑:脚本学堂
本文介绍了python 时间模块time与datetime模块的用法,python time时间模块获取时间方法,time和datetime模块常用方法的例子,一起学习下。

python/timemokuai/ target=_blank class=infotextkey>python time模块与datetime模块的实例教程

一,python time时间模块获取时间方法
1.得到当前时间
使用time模块,首先得到当前的时间戳
 

In [42]: time.time()
Out[42]: 1408066927.208922
 

将时间戳转换为时间元组 struct_time
 

In [43]: time.localtime(time.time())
Out[43]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=9, tm_min=42, tm_sec=20, tm_wday=4, tm_yday=227, tm_isdst=0)
 

格式化输出想要的时间
 

In [44]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
Out[44]: '2014-08-15 09:43:04'
 

接上文,不加参数时,默认就是输出当前的时间
 

复制代码 代码示例:
In [48]: time.strftime('%Y-%m-%d %H:%M:%S')
Out[48]: '2014-08-15 09:46:53’
 

当然也可以透过datetime模块来实现,如下:
 

In [68]: t = time.time()
In [69]: datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
Out[69]: '2014-08-15 10:04:51’
 

同时,也可以只使用datetime模块
 

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模块:
 

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.计算昨天的日期(发散思维,计算其他日期相加、相减等):
 

In [52]: d1 = datetime.datetime.now()
In [53]: d2 = d1 - datetime.timedelta(days=1)
In [54]: d1
Out[54]: datetime.datetime(2014, 8, 15, 9, 54, 10, 68665)
In [55]: d2
Out[55]: datetime.datetime(2014, 8, 14, 9, 54, 10, 68665)

4.时间元组 struct_time转化为时间戳
 

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

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

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)

二:python time模块与python datetime模块常用方法
表示时间的两种方式:
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
 

官方time模块:<http://python.me/library/time.html#module-time>