1.獲得當前時間html
使用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.獲取時間差,計算程序的執行時間等: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
3.計算昨天的日期(發散思惟,計算其餘日期相加、相減等):ide
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轉化爲時間戳spa
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)
##二:time和datetime模塊經常使用方法簡介orm
表示時間的兩種方式:htm
1. 時間戳(相對於1970.1.1 00:00:00以秒計算的偏移量),時間戳是唯一的 2. 時間元組 即(struct_time),共有九個元素,分別表示,同一個時間戳的struct_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 殘陽似血的博客:<http://qinxuye.me/article/details-about-time-module-in-python/> 官方time模塊:<http://python.me/library/time.html#module-time>
##datetime 模塊經常使用方法小記
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、0一、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)