python datetime模塊處理時間

寫程序時遇到了記錄日期、時間,比較時間早晚的需求,考慮用datetime模塊來實現。

 

 

datetime模塊定義了下面這幾個類:

  • datetime.date:表示日期的類。常用的屬性有year, month, day;
  • datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期時間。
  • datetime.timedelta:表示時間間隔,即兩個時間點之間的長度。
  • datetime.tzinfo:與時區有關的相關信息。(這裏不詳細充分討論該類,感興趣的童鞋可以參考python手冊)

    注 :上面這些類型的對象都是不可變(immutable)的。

我的需求涉及日期和時間,所以選用datetime類。

 

datetime是date與time的結合體,包括date與time的所有信息。它的構造函數如下:datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ),各參數的含義與date、time的構造函數中的一樣。

    datetime類定義的類屬性與方法:

  • datetime.min、datetime.max:datetime所能表示的最小值與最大值;
  • datetime.resolution:datetime最小單位;
  • datetime.today():返回一個表示當前本地時間的datetime對象;
  • datetime.now([tz]):返回一個表示當前本地時間的datetime對象,如果提供了參數tz,則獲取tz參數所指時區的本地時間;
  • datetime.utcnow():返回一個當前utc時間的datetime對象;
  • datetime.fromtimestamp(timestamp[, tz]):根據時間戮創建一個datetime對象,參數tz指定時區信息;
  • datetime.utcfromtimestamp(timestamp):根據時間戮創建一個datetime對象;
  • datetime.combine(date, time):根據date和time,創建一個datetime對象;
  • datetime.strptime(date_string, format):將格式字符串轉換爲datetime對象;

使用例子:

from  datetime  import  *  
import  time  
  
print   'datetime.max:' , datetime.max  
print   'datetime.min:' , datetime.min  
print   'datetime.resolution:' , datetime.resolution  
print   'today():' , datetime.today()  
print   'now():' , datetime.now()  
print   'utcnow():' , datetime.utcnow()  
print   'fromtimestamp(tmstmp):' , datetime.fromtimestamp(time.time())  
print   'utcfromtimestamp(tmstmp):' , datetime.utcfromtimestamp(time.time())  
  
# ---- 結果 ----   
# datetime.max: 9999-12-31 23:59:59.999999   
# datetime.min: 0001-01-01 00:00:00   
# datetime.resolution: 0:00:00.000001   
# today(): 2010-04-07 09:48:16.234000   
# now(): 2010-04-07 09:48:16.234000   
# utcnow(): 2010-04-07 01:48:16.234000  # 中國位於+8時間,與本地時間相差8   
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000   
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000   
from datetime import *  
import time  
  
print 'datetime.max:', datetime.max  
print 'datetime.min:', datetime.min  
print 'datetime.resolution:', datetime.resolution  
print 'today():', datetime.today()  
print 'now():', datetime.now()  
print 'utcnow():', datetime.utcnow()  
print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())  
print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time())  
  
# ---- 結果 ----  
# datetime.max: 9999-12-31 23:59:59.999999  
# datetime.min: 0001-01-01 00:00:00  
# datetime.resolution: 0:00:00.000001  
# today(): 2010-04-07 09:48:16.234000  
# now(): 2010-04-07 09:48:16.234000  
# utcnow(): 2010-04-07 01:48:16.234000  # 中國位於+8時間,與本地時間相差8  
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000  
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000 

 

    datetime類提供的實例方法與屬性(很多屬性或方法在date和time中已經出現過):

  • datetime.year、month、day、hour、minute、second、microsecond、tzinfo:
  • datetime.date():獲取date對象;
  • datetime.time():獲取time對象;
  • datetime. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):
  • datetime. timetuple ()
  • datetime. utctimetuple ()
  • datetime. toordinal ()
  • datetime. weekday ()
  • datetime. isocalendar ()
  • datetime. isoformat ([ sep] )
  • datetime. ctime ():返回一個日期時間的C格式字符串,等效於time.ctime(time.mktime(dt.timetuple()));
  • datetime. strftime (format)
  • format支持如下格式:
    """
    轉成字符串
    %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 當前時區的名稱
    %% %號本身 
    """

    兩個datetime對象可以直接進行比較,或者相減返回一個時間間隔對象,或者日期時間加上一個間隔返回一個新的日期時間對象。

 

參考文章:python datetime處理時間

其他參考文章:Python中時間的處理之——Time篇

 

 

發佈了44 篇原創文章 · 獲贊 23 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章