datatime模塊從新封裝了time模塊,提供更多接口,提供的類有:date,time,datetime,timedelta,tzinfo。python
一、date類ide
datetime.date(year, month, day)spa
靜態方法和字段code
date.max、date.min:date對象所能表示的最大、最小日期;
date.resolution:date對象表示日期的最小單位。這裏是天。
date.today():返回一個表示當前本地日期的date對象;
date.fromtimestamp(timestamp):根據給定的時間戮,返回一個date對象;
from datetime import * import time print 'date.max:', date.max print 'date.min:', date.min print 'date.today():', date.today() print 'date.fromtimestamp():', date.fromtimestamp(time.time()) #Output====================== # date.max: 9999-12-31 # date.min: 0001-01-01 # date.today(): 2016-10-26 # date.fromtimestamp(): 2016-10-26
方法和屬性orm
d1 = date(2011,06,03)#date對象 d1.year、date.month、date.day:年、月、日; d1.replace(year, month, day):生成一個新的日期對象,用參數指定的年,月,日代替原有對象中的屬性。(原有對象仍保持不變) d1.timetuple():返回日期對應的time.struct_time對象; d1.weekday():返回weekday,若是是星期一,返回0;若是是星期2,返回1,以此類推; d1.isoweekday():返回weekday,若是是星期一,返回1;若是是星期2,返回2,以此類推; d1.isocalendar():返回格式如(year,month,day)的元組; d1.isoformat():返回格式如'YYYY-MM-DD’的字符串; d1.strftime(fmt):和time模塊format相同。
二、time類對象
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ) blog
靜態方法和字段接口
time.min、time.max:time類所能表示的最小、最大時間。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
time.resolution:時間的最小單位,這裏是1微秒;
方法和屬性utf-8
t1 = datetime.time(10,23,15)#time對象
t1.hour、t1.minute、t1.second、t1.microsecond:時、分、秒、微秒;
t1.tzinfo:時區信息;
t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):建立一個新的時間對象,用參數指定的時、分、秒、微秒代替原有對象中的屬性(原有對象仍保持不變);
t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示; t1.strftime(fmt):同time模塊中的format;
三、datetime類字符串
datetime至關於date和time結合起來。
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
靜態方法和字段
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對象;
方法和屬性
dt=datetime.now()#datetime對象 dt.year、month、day、hour、minute、second、microsecond、tzinfo: dt.date():獲取date對象; dt.time():獲取time對象; dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]): dt. timetuple () dt. utctimetuple () dt. toordinal () dt. weekday () dt. isocalendar () dt. isoformat ([ sep] ) dt. ctime ():返回一個日期時間的C格式字符串,等效於time.ctime(time.mktime(dt.timetuple())); dt. strftime (format)
4.timedelta類,時間加減
使用timedelta能夠很方便的在日期上作天days,小時hour,分鐘,秒,毫秒,微妙的時間計算,若是要計算月份則須要另外的辦法。
#coding:utf-8 from datetime import * dt = datetime.now() #日期減一天 dt1 = dt + timedelta(days=-1)#昨天 dt2 = dt - timedelta(days=1)#昨天 dt3 = dt + timedelta(days=1)#明天 delta_obj = dt3-dt print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00 print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
五、tzinfo時區類
#! /usr/bin/python # coding=utf-8 from datetime import datetime, tzinfo,timedelta """ tzinfo是關於時區信息的類 tzinfo是一個抽象類,因此不能直接被實例化 """ class UTC(tzinfo): """UTC""" def __init__(self,offset = 0): self._offset = offset def utcoffset(self, dt): return timedelta(hours=self._offset) def tzname(self, dt): return "UTC +%s" % self._offset def dst(self, dt): return timedelta(hours=self._offset) #北京時間 beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8)) print "beijing time:",beijing #曼谷時間 bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7)) print "bangkok time",bangkok #北京時間轉成曼谷時間 print "beijing-time to bangkok-time:",beijing.astimezone(UTC(7)) #計算時間差時也會考慮時區的問題 timespan = beijing - bangkok print "時差:",timespan #Output================== # beijing time: 2011-11-11 00:00:00+08:00 # bangkok time 2011-11-11 00:00:00+07:00 # beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00 # 時差: -1 day, 23:00:00
補充:
一、若是你想將時間對象轉化爲字符串對象的話,能夠用到__format__(...)
方法以指定格式進行時間輸出:
a = datetime.time(12,20,59,899) a.__format__('%H:%M:%S') 輸出:'12:20:59'
與此方法等價的方法爲strftime(...)
>>> a = datetime.time(12,20,59,899) >>> a.strftime('%H:%M:%S') '12:20:59'
二、ISO標準輸出
若是要使輸出的時間字符符合ISO標準,請使用isoformat(...)
:
>>> a = datetime.time(12,20,59,899) >>> a.isoformat() '12:20:59.000899'
三、若是隻是相簡單的得到時間的字符串,則使用__str__(...)
>>> a = datetime.time(12,20,59,899) >>> a.__str__() '12:20:59.000899'