Python學習--15 日期和時間

方法預覽: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

datetime加減

能夠直接導入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

python中時間日期格式化符號

%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模塊

下面示例演示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模塊內置函數

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從新初始化時間相關設置。
相關文章
相關標籤/搜索