天天看點

python時間處理詳解

1.擷取目前時間的兩種方法:

import datetime,time
now = time.strftime("%Y-%m-%d %H:%M:%S")
print now
now = datetime.datetime.now()
print now
2.擷取上個月最後一天的日期(本月的第一天減去1天)

last = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
print last
3.擷取時間差(時間差機關為秒,常用于計算程式運作的時間)

starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

4.計算目前時間向後10個小時的時間
 
d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()

其本上常用的類有:datetime和timedelta兩個。它們之間可以互相加減。每個類都有一些方法和屬性可以檢視具體的值,如 datetime可以檢視:天數(day),小時數(hour),星期幾(weekday())等;timedelta可以檢視:天數(days),秒數 (seconds)等。 

5.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 目前時區的名稱
%% %号本身
附上示例代碼:
代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#-*-coding:utf-8-*-   
import datetime, calendar   
  
def getYesterday():   
    today=datetime.date.today()   
    oneday=datetime.timedelta(days=1)   
    yesterday=today-oneday   
   return yesterday   
      
def getToday():   
    return datetime.date.today()     
  
#擷取給定參數的前幾天的日期,傳回一個list   
def getDaysByNum(num):   
     today=datetime.date.today()   
     oneday=datetime.timedelta(days=1)       
     li=[]        
    for i in range(0,num):   
        #今天減一天,一天一天減   
         today=today-oneday   
        #把日期轉換成字元串   
        #result=datetostr(today)   
         li.append(datetostr(today))   
    return li   
  
#将字元串轉換成datetime類型   
def strtodatetime(datestr,format):       
    return datetime.datetime.strptime(datestr,format)   
  
#時間轉換成字元串,格式為2008-08-02   
def datetostr(date):     
    return    str(date)[0:10]   
  
#兩個日期相隔多少天,例:2008-10-03和2008-10-01是相隔兩天   
def datediff(beginDate,endDate):   
     format="%Y-%m-%d";   
     bd=strtodatetime(beginDate,format)   
     ed=strtodatetime(endDate,format)       
     oneday=datetime.timedelta(days=1)   
     count=0  
    while bd!=ed:   
         ed=ed-oneday   
         count+=1  
    return count   
  
#擷取兩個時間段的所有時間,傳回list   
def getDays(beginDate,endDate):   
     format="%Y-%m-%d";   
     bd=strtodatetime(beginDate,format)   
     ed=strtodatetime(endDate,format)   
     oneday=datetime.timedelta(days=1)   
     num=datediff(beginDate,endDate)+1   
     li=[]   
    for i in range(0,num):   
         li.append(datetostr(ed))   
         ed=ed-oneday   
    return li   
  
#擷取目前年份 是一個字元串   
def getYear():   
    return str(datetime.date.today())[0:4]   
  
#擷取目前月份 是一個字元串   
def getMonth():   
    return str(datetime.date.today())[5:7]   
  
#擷取目前天 是一個字元串   
def getDay():   
    return str(datetime.date.today())[8:10]      
def getNow():   
    return datetime.datetime.now()   
  
       
print getToday()   
print getYesterday()   
print getDaysByNum(3)   
print getDays('2008-10-01','2008-10-05')   
print '2008-10-04 00:00:00'[0:10]   
  
print str(getYear())+getMonth()+getDay()   
print getNow()           

複制