1. 程式人生 > >time和datetime

time和datetime

模塊 att 相關 1970年1月1日 image 完整 struct from dst

一、time模塊
常用函數
1. time()函數
time()函數返回的是時間戳(timestamp)。所謂時間戳指的是從1970年1月1日00:00:00開始按秒計算的偏移量。其他返回時間戳方式的函數還有clock()。

實例

>>>import time
>>>time.time()
1515117751.8810253

2. ctime()函數
ctime()函數可以將一個時間戳轉化為字符串的形式,默認time.time()為參數。(convert time in seconds to string)

實例

>>>import time
>>>time.ctime()
‘Fri Jan 5 10:21:29 2018‘
>>>time.ctime(1500000000)
‘Fri Jul 14 10:40:00 2017‘

4.gmtime()函數
gmtime()用於獲取UTC時間,UTC時間實際就是格林尼治時間,它與中國時間的時差為八個小時。

實例

>>>import time
>>>time.gmtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=5, tm_hour=3, tm_min=27, tm_sec=18, tm_wday=4, tm_yday=5, tm_isdst=0)

5. localtime()函數
localtime()用於獲取當前時區的當前時間。

實例

>>>import time
>>>time.localtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=5,tm_hour=11, tm_min=28, tm_sec=48, tm_wday=4, tm_yday=5, tm_isdst=0)

6. strftime()函數
strftime()把一個代表時間的元組或者struct_time(如time.localtime()和time.gmtime()返回)轉化為格式化的時間字符串。如果t未指定,將傳入time.localtime()。

實例

>>> time.strftime("%Y-%m-%d %X")
‘2018-01-05 11:20:21‘
>>> time.strftime("%Y-%m-%d %H:%M:%S")
‘2018-01-05 11:21:30‘
>>> time.strftime("%Y-%m-%d %X", time.localtime())
‘2018-01-05 11:23:04‘

* format time格式化表示*

格式 含義
%Y 完整的年份
%m 月份(01 - 12)
%d 一個月中的第幾天(01 - 31)
%H 一天中的第幾個小時(24小時制,00 - 23)
%M 分鐘數(00 - 59)
%S 秒(01 - 61)
%X 本地相應時間
%x 本地相應日期
%a 本地(locale)簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期和時間表示
%I 第幾個小時(12小時制,01 - 12)
%j 一年中的第幾天(001 - 366)
%p 本地am或者pm的相應符
%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)
%w 一個星期中的第幾天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一為一個星期的開始
%y 去掉世紀的年份(00 - 99)
%Z 時區的名字(如果不存在為空字符)
%% ‘%’字符
註:表中加粗部分為最常用格式

7. strptime()函數
strptime()把一個格式化時間字符串轉化為struct_time。實際上它和strftime()是逆操作

實例

>>>import time
>>>time.strptime(‘2018-01-05 10:50:06‘,‘%Y-%m-%d %X‘)
time.struct_time(tm_year=2018,tm_mon=1,tm_mday=5,tm_hour=10,tm_min=50,tm_sec=6, tm_wday=4, tm_yday=5, tm_isdst=-1)

8. mktime()函數
mktime()可以將struct_time轉換成用時間的浮點數表示

實例

>>> time.mktime(time.gmtime())
1515094387.0
>>> time.mktime(time.localtime())
1515123246.0

9. sleep()函數
線程推遲指定的時間運行,單位為秒。

import time
>>> time.sleep(3) #表示延遲3秒後程序繼續運行

小結:
time模塊中時間表現的格式主要有3種:
1. timestamp 時間戳
2. tuple或者struct_time 時間元組,共有九個元素組
3. formattime格式化字符串

它們之間的轉化如圖所示:

技術分享圖片


二、datetime模塊
datetime模塊包含一個datetime類,通過from datetime import datetime導入的就是datetime這個類。

常見操作
1. 獲取當前日期
>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2018, 1, 5, 16, 2, 47, 929705)
>>> print(now)
2018-01-05 16:02:47.929705

2. 獲取指定日期和時間
>>> from datetime import datetime
>>> dt=datetime(2018, 1, 1, 1, 1)
>>> print(dt)
2018-01-01 01:01:00

3. datetime類型轉換為timestamp
只需要簡單調用timestamp()方法

>>> from datetime import datetime
>>> dt=datetime(2018, 1, 1, 1, 1)
>>> dt.timestamp()
1514739660.0

4. timestamp轉換為datetime
使用datetime提供的fromtimestamp()方法

>>> from datetime import datetime
>>> t = 1514739660.0
>>> print(datetime.fromtimestamp(t))
2018-01-01 01:01:00

5. str轉換為datetime
當日期和時間為字符串時,需要把str轉換為datetime,可通過datetime.strptime()實現。

>>> from datetime import datetime
>>> dt= datetime.strptime(‘2018-1-1 1:11:11‘, ‘%Y-%m-%d %H:%M:%S‘)
>>> print(dt)
2018-01-01 01:11:11

6. datetime轉換為str
如果已經有了datetime對象,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過strftime()實現的。

>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2018, 1, 5, 16, 22, 50, 394736)
>>> now.strftime(‘%Y-%m-%d %H:%M:%S‘)
‘2018-01-05 16:22:50‘

7. datetime加減
對日期和時間進行加減需要導入timedelta這個類

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2018, 1, 5, 16, 22, 50, 394736)
>>> now + timedelta(hours=10)
datetime.datetime(2018, 1, 6, 2, 22, 50, 394736)
>>> now - timedelta(days=10)
datetime.datetime(2017, 12, 26, 16, 22, 50, 394736)
>>> now + timedelta(days=10, hours=12)
datetime.datetime(2018, 1, 16, 4, 22, 50, 394736)

小結
datetime模塊定義了5個類:

序號 類 含義
1 datetime.datetime 表示日期時間的類
2 datetime.timedelta 表示時間間隔,即兩個時間點的間隔
3 datetime.date 表示日期的類
4 datetime.time 表示時間的類
5 datetime.tzinfo 時區的相關信息

time和datetime