python---關于時間的處理(二)

繼續(xù)上一篇關于時間處理的總結

??上一篇主要講述time模塊,今天主要講datetime模塊,相比time模塊,功能更為強大、更為優(yōu)雅簡潔。

datetime包括以下幾個類:

  • date,日期類,常用屬性有(year,month,day)
  • time,時間類,常用屬性有(hour,minute,second,microsecond,tzinfo)
  • datetime,日期時間類,繼承date類,類似前一篇提到的time模塊
  • timedelta,表示2個datetime值的差值,常用屬性有(days,seconds)
  • timezone,與時區(qū)相關類,繼承 tzinfo
  • tzinfo,與時區(qū)相關類

接下來分別講解

date類

  • year取值范圍[1,9999],最小值可由date.min獲得,同理,最大值可由date.max獲得
  • month取值范圍[1,12]
  • day 最大值有year和month值決定,超過規(guī)定的值報錯day is out of range for month
  • 常用date對象實例方法
    • today() 返回當前時區(qū)的日期,date對象
    • fromtimestamp() 將指定的時間戳轉化成date對象
    • isoweekday() ,返回date對象日期所處的星期,與日常使用的weekday習慣保持一致
    • strftime(),格式化date對象
    • replace(),生成一個新的日期對象,原有對象仍保持不變,用參數(shù)指定的年,月,日代替原有對象中的屬性
    • 根據(jù)API提供的私有方法可知,date對象可進行加減、比較等操作
d=date.today()
d1=date(2017, 07, 06)
print("當前日期:{},自定義日期:{}".format(d,d1))
print("當前日期:{}對應的星期:{}".format(d,d.isoweekday()))
print("將date對象:{}轉化成其他格式:{}".format(d,d.strftime("%Y/%m/%d")))
print("將日期:{}的day替換,替換后:{}".format(d,d.replace(day=23)))
print("日期:{} 與另外一個日期:{}的差值:{}".format(d,d1,(d-d1).days))
#結果
當前日期:2017-07-20,自定義日期:2017-07-06
當前日期:2017-07-20對應的星期:4
將date對象:2017-07-20轉化成其他格式:2017/07/20
將日期:2017-07-20的day替換,替換后:2017-07-23
日期:2017-07-20 與另外一個日期:2017-07-06的差值:14

time類

  • hour的范圍為[0, 24)
  • minute的范圍為[0, 60)
  • second的范圍為[0, 60)
  • microsecond的范圍為[0, 1000000)
  • 常見time對象的實例方法的使用同date對象類似
  • 根據(jù)API提供的私有方法可知,time對象不可進行加減操作,只可進行比較,結果返回True or False
t=time(11,12,12)
print("自定義time對象:{}".format(t))
print("使用默認的格式,格式化time對象:{}".format(t.isoformat()))
#結果
自定義time對象:11:12:12
使用默認的格式,格式化time對象:11:12:12

datetime類
??datetime類繼承date,包括date與time的所有信息。它的構造函數(shù)如下:
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ),各參數(shù)的含義與date、time的構造函數(shù)中的一樣,參數(shù)值的范圍同date、time

  • 常用datetime對象實例方法
  • now(tz=None) ,默認返回本地時區(qū)的datetime對象,可指定tz,即timezone對象,則返回指定時區(qū)的datetime對象
  • utcnow() ,返回utc時間(即0時區(qū))的datetime對象
  • fromtimestamp(timestamp[, tz]),默認按照本地時區(qū)將時間戳轉化成datetime對象
  • utcfromtimestamp(),默認按照0時區(qū)將時間戳轉化成datetime對象
  • timestamp(dt) ,將datetime對象轉化成時間戳,為浮點型
  • date(dt),返回datetime對象的日期
  • time(dt),返回datetime對象的時間
  • strptime(string, format),將指定格式為format的時間字符串轉換為datetime對象
  • combine(date, time),將date對象和time對象合并成datetime對象
from datetime import *
ptimestamp=1400000000
datestring="2017/11/22 12:22"
now=datetime.now()
utcnow=datetime.utcnow()
date=datetime.date(now)
time=datetime.time(now)
localdatetime=datetime.fromtimestamp(ptimestamp)
utcdatetime=datetime.utcfromtimestamp(ptimestamp)
newformat=datetime.strptime(datestring,"%Y/%m/%d %H:%M")
print("當前時間----本地時區(qū)當前時間:{},0時區(qū)當前時間:{}".format(now,utcnow))
print("指定datetime對象的日期:{},時間:{}".format(date,time))
print("指定時間戳:{}轉化成本地時區(qū)對應的datetime對象:{},轉化成0時區(qū)對應的datetime對象:{}".format(ptimestamp,localdatetime,utcdatetime))
print("指定格式的時間字符串轉化成datetime對象:原來:{},現(xiàn)在:{}".format(datestring,newformat))
endtime=datetime.now()
print("2個datetime對象的毫秒時間差:{}".format((endtime-now).microseconds))
print("當前時間:{}基礎上計算50天之后的日期時間:{}".format(datetime.now(),datetime.now() + timedelta(days =50)))
#結果
當前時間----本地時區(qū)當前時間:2017-07-20 14:47:09.605000,0時區(qū)當前時間:2017-07-20 06:47:09.605000
指定datetime對象的日期:2017-07-20,時間:14:47:09.605000
指定時間戳:1400000000轉化成本地時區(qū)對應的datetime對象:2014-05-14 00:53:20,轉化成0時區(qū)對應的datetime對象:2014-05-13 16:53:20
指定格式的時間字符串轉化成datetime對象:原來:2017/11/22 12:22,現(xiàn)在:2017-11-22 12:22:00
2個datetime對象的時間差:5000
當前時間:2017-07-20 14:47:09.610000基礎上計算50天之后的日期時間:2017-09-08 14:47:09.610000

??時區(qū)的轉化參見 pytz模塊,這里不展開深入了解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容