方法預覽:python
datetime.now() # 當前時間,datetime類型 datetime.timestamp() # 時間戳,浮點類型 datetime.strftime('%Y-%m-%d %H:%M:%S') # 格式化日期對象datetime,字符串類型 datetime.strptime('2017-2-6 23:22:13', '%Y-%m-%d %H:%M:%S') # 字符串轉日期對象 datetime.fromtimestamp(ts) # 獲取本地時間,datetime類型 datetime.utcfromtimestamp(ts) # 獲取UTC時間,datetime類型
# coding: utf-8 from datetime import datetime now = datetime.now() print(now) print(now.strftime('%Y-%m-%d %H:%M:%S')) print(type(now))
輸出:函數
2017-02-06 23:18:29.624698 2017-02-06 23:18:29 <class 'datetime.datetime'>
strftime()
用於格式化日期對象datetime。另一個方法strptime()
則負責把一個字符串str轉爲datetime
對象:線程
from datetime import datetime # 注意時間字符串與格式化字符串位置一一對應,不然報錯 odate = datetime.strptime('2017-2-6 23:22:13', '%Y-%m-%d %H:%M:%S') print(odate) print(type(odate))
輸出:code
2017-02-06 23:22:13 <class 'datetime.datetime'>
# coding: utf-8 from datetime import datetime import time now = datetime.now() print(now) # datetime模塊提供 print(now.timestamp()) # time模塊提供 print(time.time())
輸出:對象
2017-02-06 23:26:54.631582 1486394814.631582 1486394814.631582
小數位表示毫秒數。utf-8
自定義時間轉換爲時間戳:字符串
from datetime import datetime # 方式1: odate = datetime.strptime('2017-2-6 23:29:20', '%Y-%m-%d %H:%M:%S') print(odate.timestamp()) # 方式2: odate = datetime(2017, 2, 6, 23, 29, 20) print(odate.timestamp())
輸出:table
1486394960.0 1486394960.0
注意:timestamp的值是與時區無關的。datetime是有時區的。class
下面演示如何把timestamp轉換爲datetime。import
時間戳轉日期:
# coding: utf-8 from datetime import datetime now = datetime.now() ts = now.timestamp() print(datetime.fromtimestamp(ts)) # 本地時間 print(datetime.utcfromtimestamp(ts)) # UTC時間
輸出:
2017-02-06 23:38:05.213937 2017-02-06 15:38:05.213937
能夠直接導入timedelta類實現日期加減:
# coding: utf-8 from datetime import datetime, timedelta import time now = datetime.now() # now += timedelta(hours=10) # now += timedelta(minutes=10) # now += timedelta(weeks=1) now += timedelta(days=-1, hours=1, minutes=1, seconds=10) print(now)
輸出:
2017-02-06 00:47:12.395231
%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 當前時區的名稱 %% %號自己
下面示例演示time模塊裏的經常使用方法:
# coding:utf-8 import time # 獲取時間戳 timestamp = time.time() print(timestamp) # 格式時間 print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # 返回當地時間下的時間元組t print(time.localtime()) # 將時間元組轉換爲時間戳 print(time.mktime(time.localtime())) t = (2017, 2, 11, 15, 3, 38, 1, 48, 0) print(time.mktime(t)) # 字符串轉時間元組:注意時間字符串與格式化字符串位置一一對應 print(time.strptime('2017 02 11', '%Y %m %d')) # 睡眠 print('sleeping...') time.sleep(2) # 睡眠2s print('sleeping end.')
輸出:
1486797515.78742 2017-02-11 15:18:35 time.struct_time(tm_year=2017, tm_mon=2, tm_mday=11, tm_hour=15, tm_min=18, tm_sec=35, tm_wday=5, tm_yday=42, tm_isdst=0) 1486797515.0 1486796618.0 time.struct_time(tm_year=2017, tm_mon=2, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=42, tm_isdst=-1) sleeping... sleeping end.
下面是Python時間元組:
序號 | 屬性 |
---|---|
0 | tm_year |
1 | tm_mon |
2 | tm_mday |
3 | tm_hour |
4 | tm_min |
5 | tm_sec |
6 | tm_wday |
7 | tm_yday |
8 | tm_isdst |
Time 模塊包含了如下內置函數,既有時間處理相的,也有轉換時間格式的:
序號 | 函數 | 描述 |
---|---|---|
1 | time.altzone | 返回格林威治西部的夏令時地區的偏移秒數。若是該地區在格林威治東部會返回負值(如西歐,包括英國)。對夏令時啓用地區才能使用。 |
2 | time.asctime([tupletime]) | 接受時間元組並返回一個可讀的形式爲"Tue Dec 11 18:07:14 2008"(2008年12月11日 週二18時07分14秒)的24個字符的字符串。 |
3 | time.clock( ) | 用以浮點數計算的秒數返回當前的CPU時間。用來衡量不一樣程序的耗時,比time.time()更有用。 |
4 | time.ctime([secs]) | 做用至關於asctime(localtime(secs)),未給參數至關於asctime() |
5 | time.gmtime([secs]) | 接收時間輟(1970紀元後通過的浮點秒數)並返回格林威治天文時間下的時間元組t。注:t.tm_isdst始終爲0 |
6 | time.localtime([secs]) | 接收時間輟(1970紀元後通過的浮點秒數)並返回當地時間下的時間元組t(t.tm_isdst可取0或1,取決於當地當時是否是夏令時)。 |
7 | time.mktime(tupletime) | 接受時間元組並返回時間輟(1970紀元後通過的浮點秒數)。 |
8 | time.sleep(secs) | 推遲調用線程的運行,secs指秒數。 |
9 | time.strftime(fmt[,tupletime]) | 接收以時間元組,並返回以可讀字符串表示的當地時間,格式由fmt決定。 |
10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') | 根據fmt的格式把一個時間字符串解析爲時間元組。 |
11 | time.time( ) | 返回當前時間的時間戳(1970紀元後通過的浮點秒數)。 |
12 | time.tzset() | 根據環境變量TZ從新初始化時間相關設置。 |