import time time.time() 1625483470.3409266
|
三、datetime.time類
1、time類概述
作用:一個 time 對象代表某日的(本地)時間,它獨立于任何特定日期,并可通過 tzinfo 對象來調(diào)整。
語 法:
datetime.time(hour=0, minute=0, second=0, microsecond=0,
tzinfo=None, *, fold=0)
參 數(shù):
所有參數(shù)都是可選的,tzinfo 可以是 None,或者是一個 tzinfo 子類的實例。 其余的參數(shù)必須是在下面范圍內(nèi)的整數(shù):
0 <= hour < 24
0 <= minute < 60
0 <= second < 60
0 <= microsecond < 1000000
fold in [0, 1]
如果給出一個此范圍以外的參數(shù),則會引發(fā) ValueError。 所有參數(shù)值默認(rèn)為 0,只有 tzinfo 默認(rèn)為 None。
通過內(nèi)置函數(shù)dir,可以查看time類的所有方法和屬性
from datetime import timeprint(dir(time))['dst', 'fold', 'fromisoformat', 'hour', 'isoformat', 'max', 'microsecond', 'min', 'minute', 'replace', 'resolution', 'second', 'strftime', 'tzinfo', 'tzname', 'utcoffset']2、time類屬性
time.min
早最的可表示 time, time(0, 0, 0, 0)。
from datetime import timetime.mindatetime.time(0, 0)
time.max
最晚的可表示 time, time(23, 59, 59, 999999)。
from datetime import timetime.maxdatetime.time(23, 59, 59, 999999)time.resolution
兩個不相等的 time 對象之間可能的最小間隔,timedelta(microseconds=1),但是請注意 time 對象并不支持算術(shù)運算。
from datetime import timetime.resolutiondatetime.timedelta(microseconds=1)
3、time類實例屬性
time.hour
取值范圍是 range(24)。
from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.hour12time.minute
取值范圍是 range(60)。
t.minute34
time.second
取值范圍是 range(60)。
t.second56time.microsecond
取值范圍是 range(1000000)。
t.microsecond123456
time.tzinfo
作為 tzinfo 參數(shù)被傳給 time 構(gòu)造器的對象,如果沒有傳入值則為 None。
t.tzinfotime.fold
取值范圍是 [0, 1]。 用于在重復(fù)的時間段中消除邊界時間歧義。 (當(dāng)夏令時結(jié)束時回?fù)軙r鐘或由于政治原因?qū)е庐?dāng)明時區(qū)的 UTC 時差減少就會出現(xiàn)重復(fù)的時間段。) 取值 0 (1) 表示兩個時刻早于(晚于)所代表的同一邊界時間。
t.fold0
4、time類實例方法
time.replace()
作用:返回一個具有同樣屬性值的 time,除非通過任何關(guān)鍵字參數(shù)指定了某些屬性值。
語法:time.replace(hour=self.hour, minute=self.minute, second=self.second,
microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0)
from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.replace(hour=23, minute=12,)datetime.time(23, 12, 56, 123456)time.isoformat()
作用:返回表示為 ISO 8601 格式之一的時間字符串
語法:time.isoformat(timespec='auto')
from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.isoformat()'12:34:56.123456't.isoformat(timespec='minutes')'12:34'dt = time(hour=12, minute=34, second=56, microsecond=0)dt.isoformat(timespec='microseconds')'12:34:56.000000'dt.isoformat(timespec='auto')'12:34:56'
time.fromisoformat()
作用:返回對應(yīng)于 time.isoformat() 所提供的某種 time_string 格式的 time。 特別地,此函數(shù)支持以下格式的字符串:HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]
語法:time.fromisoformat(time_string)
time.fromisoformat('04:23:01')datetime.time(4, 23, 1)
time.fromisoformat('04:23:01.000384')datetime.time(4, 23, 1, 384)
time.fromisoformat('04:23:01+04:00')datetime.time(4,23,1, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))time.__str__()
作用:對于時間對象 t, str(t) 等價于 t.isoformat()
語法:time.__str__(t)
from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)time.__str__(t)'12:34:56.123456'str(t)'12:34:56.123456'time.strftime()
作用:時間->字符串,返回一個由顯式格式字符串所指明的代表時間的字符串
語法:time.strftime(format)
from datetime import timet = time(hour=12, minute=3, second=56)t.strftime('%H:%M:%S')#用:分隔'12:03:56'#用%分隔t.strftime('%H%%%M%%%S')'12%03%56'
time.__format__()
作用:與 time.strftime() 相同
語法:time.__format__(format)
from datetime import timet = time(hour=12, minute=3, second=56)t.__format__('%H:%M:%S')'12:03:56't.__format__('%H%%%M%%%S')'12%03%56'time.utcoffset()
作用:如果 tzinfo 為 None,則返回 None,否則返回 self.tzinfo.utcoffset(None),并且在后者不返回 None 或一個幅度小于一天的 a timedelta 對象時將引發(fā)異常。
time.dst()
作用:如果 tzinfo 為 None,則返回 None,否則返回 self.tzinfo.dst(None),并且在后者不返回 None 或者一個幅度小于一天的 timedelta 對象時將引發(fā)異常。
time.tzname()
作用:如果 tzinfo 為 None,則返回 None,否則返回 self.tzinfo.tzname(None),如果后者不返回 None 或者一個字符串對象則將引發(fā)異常。
from datetime import time, tzinfo, timedeltaclass TZ1(tzinfo):def utcoffset(self, dt):return timedelta(hours=1)def dst(self, dt):return timedelta(0)def tzname(self,dt):return '+01:00'def __repr__(self):return f'{self.__class__.__name__}()'t = time(12, 10, 30, tzinfo=TZ1())tdatetime.time(12, 10, 30, tzinfo=TZ1())t.isoformat()'12:10:30+01:00't.dst()datetime.timedelta(0)t.tzname()'+01:00't.strftime('%H:%M:%S %Z')'12:10:30 +01:00''The {} is {:%H:%M}.'.format('time', t)'The time is 12:10.'
四、datetime.datetime類
1、datetime概述
作用:date類可以同時獲得日期和時間信息,datetime 對象是包含來自 date 對象和 time 對象的所有信息的單一對象。與 date 對象一樣,datetime 假定當(dāng)前的格列高利歷向前后兩個方向無限延伸;與 time 對象一樣,datetime 假定每一天恰好有 3600*24 秒。
語法:
參數(shù):year, month 和 day 參數(shù)是必須的。 tzinfo 可以是 None 或者是一個 tzinfo 子類的實例。 其余的參數(shù)必須是在下面范圍內(nèi)的整數(shù):
MINYEAR <= year <= MAXYEAR,
1 <= month <= 12,
1 <= day <= 指定年月的天數(shù),
0 <= hour < 24,
0 <= minute < 60,
0 <= second < 60,
0 <= microsecond < 1000000,
fold in [0, 1].
如果參數(shù)不在這些范圍內(nèi),則拋出 ValueError 異常。
注意:microsecond-微秒,百萬分之一秒
datetime類是date和time的結(jié)合體,包括date與time的所有信息,date和time類中具有的方法和屬性,datetime類都具有。我們可以使用內(nèi)置函數(shù)dir查看該模塊支持的方法
print(dir(datetime.datetime))[ 'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold','fromisoformat', 'fromordinal', 'fromtimestamp', 'hour','isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond','min', 'minute', 'month', 'now', 'replace', 'resolution', 'second','strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz','today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow','utcoffset', 'utctimetuple', 'weekday', 'year']
2、datetime類方法
datetime.today()
作用:獲取今天的時間,返回datetime對象,其中 tzinfo 為 None。 此方法的功能等價于 now(),但是不帶 tz 形參。
語法:datetime.datetime.today(tz=None )
from datetime import datetimedatetime.today() datetime.datetime(2021, 7, 5, 17, 58, 21, 359135)注:359135,microsecond-微秒,百萬分之一秒
datetime.now()
作用:返回當(dāng)前時間,返回datetime對象。
語法:datetime.datetime.now(tz=None )
from datetime import datetime#獲取現(xiàn)在時間datetime.now()datetime.datetime(2021, 6, 27, 21, 59, 53, 950783)#調(diào)整下格式datetime.now().strftime('%Y-%m-%d %H:%M:%S')'2021-06-27 22:01:49'
datetime.utcnow()
作用:返回表示當(dāng)前 UTC 時間的 date 和 time,其中 tzinfo 為 None。
語法:datetime.utcnow()
from datetime import datetimedatetime.utcnow()datetime.datetime(2021, 7, 6, 2, 46, 7, 229768)datetime.now()datetime.datetime(2021, 7, 6, 10, 46, 3, 67817)可以看到,now()與相差了差不多8小時
datetime.fromtimestamp()
作用:將時間戳表示為本地時間的簡單日期時間對象, 如果可選參數(shù) tz 為 None 或未指定,時間戳?xí)晦D(zhuǎn)換為所在平臺的本地日期和時間,返回的 datetime 對象將為天真型。
語法:datetime.datetime.fromtimestamp(timestamp, tz=None)
import timeimport datetimett = time.time()tt1625542045.2471695datetime.datetime.fromtimestamp(tt)datetime.datetime(2021, 7, 6, 11, 27, 25, 247169)#取整數(shù)后,精確到秒,否則精確到微秒,一微秒=百萬分之一秒datetime.datetime.fromtimestamp(1625542045)datetime.datetime(2021, 7, 6, 11, 27, 25)#例如,使用日期2008-12-27午夜UTC(自紀(jì)元起40*356*86400秒)datetime.datetime.fromtimestamp(40 * 356 * 86400)datetime.datetime(2008, 12, 27, 1, 0)
datetime.utcfromtimestamp()
作用:將時間戳表示為本地時間的UTC日期時間對象
語法:datetime.datetime.utcfromtimestamp(timestamp)
datetime.fromordinal()
作用:返回對應(yīng)于預(yù)期格列高利歷序號的 datetime,其中公元 1 年 1 月 1 日的序號為 1。 除非 1 <= ordinal <= datetime.max.toordinal() 否則會引發(fā) ValueError。 結(jié)果的 hour, minute, second 和 microsecond 值均為 0,并且 tzinfo 值為 None。
語法:datetime.fromordinal(ordinal)
datetime.datetime.fromordinal(730920)datetime.datetime(2002, 3, 11, 0, 0)
datetime.combine()
作用:返回一個date對象和一個time對象合成的date對象, 如果提供了 tzinfo 參數(shù),其值會被用來設(shè)置結(jié)果的 tzinfo 屬性,否則將使用 time 參數(shù)的 tzinfo 屬性。
語法:datetime.combine(date, time, tzinfo=self.tzinfo)
d = date(2005, 7, 14)t = time(12, 30)datetime.combine(d, t)datetime.datetime(2005, 7, 14, 12, 30)對于任意 datetime 對象 d,d = datetime.combine(d.date(), d.time(), d.tzinfo)。 如果 date 是一個 datetime 對象,它的時間部分和 tzinfo 屬性會被忽略。
datetime.fromisoformat()
作用:返回一個對應(yīng)于 date.isoformat() 和 datetime.isoformat() 所提供的某一種 date_string 的 datetime 對象。 特別地,此函數(shù)支持以下格式的字符串:YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]],其中 * 可以匹配任意的單個字符。
語法:datetime.fromisoformat(date_string)
from datetime import datetimedatetime.fromisoformat('2011-11-04')datetime.datetime(2011, 11, 4, 0, 0)datetime.fromisoformat('2011-11-04T00:05:23')datetime.datetime(2011, 11, 4, 0, 5, 23)datetime.fromisoformat('2011-11-04 00:05:23.283')datetime.datetime(2011, 11, 4, 0, 5, 23, 283000)datetime.fromisoformat('2011-11-04 00:05:23.283+00:00')datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone.utc)datetime.fromisoformat('2011-11-04T00:05:23+04:00')datetime.datetime(2011, 11, 4, 0, 5, 23,tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
datetime.fromisocalendar()
作用:返回以 year, week 和 day 值指明的 ISO 歷法日期所對應(yīng)的 datetime。 該datetime 對象的非日期部分將使用其標(biāo)準(zhǔn)默認(rèn)值來填充。 這是函數(shù) datetime.isocalendar() 的逆操作。
語法:datetime.fromisocalendar(year, week, day)
from datetime import datetimedatetime.fromisocalendar(2021, 10, 1) datetime.datetime(2021, 3, 8, 0, 0)datetime.strptime()
作用:按照特定時間格式將字符串轉(zhuǎn)換(解析)為時間類型。返回一個由顯式格式字符串所指明的代表時間的字符串。 要獲取格式指令的完整列表,請參閱 strftime() 和 strptime() 的行為。
語法:datetime.strptime(date_string, format)
dt = datetime.strptime('21/11/06 16:30', '%d/%m/%y %H:%M')dtdatetime.datetime(2006, 11, 21, 16, 30)
3、類屬性
datetime.min
最早的可表示 datetime,datetime(MINYEAR, 1, 1, tzinfo=None)。
from datetime import datetimedatetime.mindatetime.datetime(1, 1, 1, 0, 0)datetime.max
最晚的可表示 datetime,
datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)。from datetime import datetimedatetime.maxdatetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
datetime.resolution
兩個不相等的 datetime 對象之間可能的最小間隔,timedelta(microseconds=1)。
from datetime import datetimedatetime.resolutiondatetime.timedelta(microseconds=1)4、實例屬性-只讀
datetime.year
在 MINYEAR 和 MAXYEAR 之間,包含邊界。
from datetime import datetime
datetime(2021,5,20,13,14,0,0).year
2021
datetime.month
1 至 12(含)
from datetime import datetimedatetime(2021,5,20,13,14,0,0).month5datetime.day
返回1到指定年月的天數(shù)間的數(shù)字。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).day20
datetime.hour
取值范圍是 range(24)。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).hour13datetime.minute
取值范圍是 range(60)。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).minute14
datetime.second
取值范圍是 range(60)。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).second0datetime.microsecond
取值范圍是 range(1000000)。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).microsecond0
datetime.tzinfo
作為 tzinfo 參數(shù)被傳給 datetime 構(gòu)造器的對象,如果沒有傳入值則為 None。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).folddatetime.fold
取值范圍是 [0, 1]。 用于在重復(fù)的時間段中消除邊界時間歧義。 (當(dāng)夏令時結(jié)束時回?fù)軙r鐘或由于政治原因?qū)е庐?dāng)明時區(qū)的 UTC 時差減少就會出現(xiàn)重復(fù)的時間段。) 取值 0 (1) 表示兩個時刻早于(晚于)所代表的同一邊界時間。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).fold0
5、datetime實例方法
datetime.date()
作用:返回具有同樣 year, month 和 day 值的 date 對象。
用法:datetime.date()
datetime(2021,5,20,13,14,0,0).date()datetime.date(2021, 5, 20)datetime.time()
作用:返回具有同樣 hour, minute, second, microsecond 和 fold 值的 time 對象。 tzinfo 值為 None。 另請參見 timetz() 方法。
用法:datetime.time()
datetime(2021,5,20,13,14,0,0).time()datetime.time(13, 14)
datetime.timetz()
作用:返回具有同樣 hour, minute, second, microsecond, fold 和 tzinfo 屬性性的 time 對象。 另請參見 time() 方法。
用法:datetime.timetz()
datetime(2021,5,20,13,14,0,0).timetz()datetime.time(13, 14)datetime.replace()
作用:返回一個具有同樣屬性值的 datetime,除非通過任何關(guān)鍵字參數(shù)為某些屬性指定了新值。 請注意可以通過指定 tzinfo=None 來從一個感知型 datetime 創(chuàng)建一個簡單型 datetime 而不必轉(zhuǎn)換日期和時間數(shù)據(jù)。
用法:datetime.replace(year=self.year, month=self.month, day=self.day, hour=self.hour,
minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0)
from datetime import datetimedatetime(2021,5,20,13,14,0,0).replace(year=2035, month=12)datetime.datetime(2035, 12, 20, 13, 14)
datetime.astimezone()
作用:返回一個具有新的 tzinfo 屬性 tz 的 datetime 對象,并會調(diào)整日期和時間數(shù)據(jù)使得結(jié)果對應(yīng)的 UTC 時間與 self 相同,但為 tz 時區(qū)的本地時間。
用法:datetime.astimezone(tz=None)
def astimezone(self, tz): if self.tzinfo is tz: return self # Convert self to UTC, and attach the new time zone object. utc = (self - self.utcoffset()).replace(tzinfo=tz) # Convert from UTC to tz's local time. return tz.fromutc(utc)datetime.timetuple()
返回一個 time.struct_time,即 time.localtime() 所返回的類型。
from datetime import datetimedatetime(2021,5,20,13,14,0,0).timetuple()time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13,tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=-1)
datetime.utctimetuple()
作用:如果 datetime 實例 d 為簡單型,這類似于 d.timetuple(),不同之處在于 tm_isdst 會強制設(shè)為 0,無論 d.dst() 返回什么結(jié)果。 DST 對于 UTC 時間永遠(yuǎn)無效。返回UTC時間元組
語法:datetime對象.utctimetuple()
from datetime import datetimedatetime(2021,5,20,13,14,0,0).utctimetuple()time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=0)datetime.toordinal()
作用:返回日期的預(yù)期格列高利歷序號。 與 self.date().toordinal() 相同。
用法:datetime.toordinal()
datetime(2021, 5, 4).toordinal()737914
datetime.timestamp()
作用:返回對應(yīng)于 datetime 實例的 POSIX 時間戳。 此返回值是與 time.time() 返回值類似的 float 對象。
用法:datetime.timestamp()
from datetime import datetimedatetime(2021, 5, 4).timestamp()1620057600.0datetime.weekday()
作用:返回一個整數(shù)代表星期幾,星期一為 0,星期天為 6。 相當(dāng)于 self.date().weekday()。 另請參閱 isoweekday()。
用法:datetime.weekday()
import datetimedatetime.datetime(2021, 5, 4).weekday()1
datetime.isoweekday()
作用:返回一個整數(shù)代表星期幾,星期一為 1,星期天為 7。 相當(dāng)于 self.date().isoweekday()。 另請參閱 weekday(), isocalendar()。
用法:datetime.isoweekday()
import datetimedatetime.datetime(2021, 5, 4).isoweekday()2datetime.isocalendar()
作用:返回一個由三部分組成的元組: year, week 和 weekday,哪一年、第幾周和、周幾,等同于 self.date().isocalendar()。
用法:datetime.isocalendar()
import datetimedt = datetime.datetime.now()print(dt)2021-07-06 14:22:35.920877dt.isocalendar()(2021, 27, 2)
datetime.isoformat()
作用:返回一個以 ISO 8601 格式表示的日期和時間字符串
用法:datetime.isoformat(sep='T', timespec='auto')
from datetime import datetime, timezonedatetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()'2019-05-18T15:17:08.132263'datetime(2019, 5, 18, 15, 17, tzinfo=timezone.utc).isoformat()'2019-05-18T15:17:00+00:00'datetime.__str__()
作用:對于 datetime 實例 d,str(d) 等價于 d.isoformat(' ')。
語法:datetime.__str__(d)
from datetime import datetime# __str__datetime.__str__(datetime(2019, 5, 18, 15, 17, 8, 132263))'2019-05-18 15:17:08.132263'# strstr(datetime(2019, 5, 18, 15, 17, 8, 132263))'2019-05-18 15:17:08.132263'
datetime.ctime()
作用:返回一個表示日期和時間的字符串,輸出字符串將 并不 包括時區(qū)信息,無論輸入的是感知型還是簡單型。
用法:datetime.ctime()
from datetime import datetimedatetime(2002, 12, 4, 20, 30, 40).ctime()'Wed Dec 4 20:30:40 2002'#d.ctime() 等效于:time.ctime(time.mktime(d.timetuple()))在原生 C ctime() 函數(shù) (time.ctime() 會發(fā)起調(diào)用該函數(shù),但 datetime.ctime() 則不會) 遵循 C 標(biāo)準(zhǔn)的平臺上。
datetime.strftime()
作用:將給定格式的日期時間對象轉(zhuǎn)換為字符串。日期時間對象=>字符串,控制日期時間對象的輸出格式,date、datetime、time對象都支持strftime(format) 方法,可用來創(chuàng)建由一個顯式格式字符串所控制的表示時間的字符串。要獲取格式指令的完整列表,查看文末列表。
用法:datetime.strftime(format)
import datetimedt=datetime.datetime(2006, 11, 21, 16, 30)dt.strftime('%Y-%m-%d %H:%M')'2006-11-21 16:30'dt.strftime('%Y-%m-%d')'2006-11-21'dt.strftime('%A, %d. %B %Y %I:%M%p')'Tuesday, 21. November 2006 04:30PM'
對比:
strftime: 將給定格式的日期時間對象轉(zhuǎn)換為字符串。日期時間對象=>字符串,控制輸出格式
strptime:將字符串解析為給定格式的日期時間對象。字符串=>日期時間對象,解析字符串
strftime | strptime | |
用法 | 根據(jù)給定的格式將對日期時間象轉(zhuǎn)換為字符串 | 將字符串解析為給定相應(yīng)格式的datetime 對象 |
類型 | 實例方法 | 類方法 |
方法 | date; datetime; time | datetime |
用法 | strftime(format) | strptime(date_string, format) |
示例 | datetime.datetime(2006, 11, 21, 16, 30) => '2006-11-21 16:30' | '21/11/06 16:30' => datetime.datetime(2006, 11, 21, 16, 30) |
datetime.__format__()
作用:與 datetime.strftime() 相同。
語法:datetime.__format__(format)
import datetimedt=datetime.datetime(2006, 11, 21, 16, 30)dt.__format__('%Y-%m-%d %H:%M')'2006-11-21 16:30'五、datetime.timedelta
1、模塊概述
作用:timedelta 對象表示兩個 date 或者 time 的時間間隔。
語法:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0,
minutes=0, hours=0, weeks=0)
參數(shù):只有 days, seconds 和 microseconds 會存儲在內(nèi)部。 參數(shù)單位的換算規(guī)則如下:
1毫秒會轉(zhuǎn)換成1000微秒。
1分鐘會轉(zhuǎn)換成60秒。
1小時會轉(zhuǎn)換成3600秒。
1星期會轉(zhuǎn)換成7天。
并且 days, seconds, microseconds 會經(jīng)標(biāo)準(zhǔn)化處理以保證表達(dá)方式的唯一性,即:
0 <= microseconds < 1000000
0 <= seconds < 3600*24 (一天的秒數(shù))
-999999999 <= days <= 999999999
下面的例子演示了如何對 days, seconds 和 microseconds 以外的任意參數(shù)執(zhí)行“合并”操作并標(biāo)準(zhǔn)化為以上三個結(jié)果屬性
from datetime import timedeltadelta = timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000,minutes=5,hours=8,weeks=2)#只有 days, seconds 和 microseconds 會存儲在內(nèi)部,其他會被轉(zhuǎn)換deltadatetime.timedelta(days=64, seconds=29156, microseconds=10)
通過dir查看該類的方法和屬性
import datetimedir(datetime.timedelta)['days','max','microseconds', 'min', 'resolution', 'seconds', 'total_seconds']2、類屬性
timedelta.min
The most negative timedelta object, timedelta(-999999999).
from datetime import timedeltatimedelta.mindatetime.timedelta(days=-999999999)
timedelta.max
from datetime import timedeltatimedelta.maxdatetime.timedelta(days=999999999, seconds=86399, microseconds=999999)timedelta.resolution
兩個不相等的 timedelta 類對象最小的間隔為 timedelta(microseconds=1)。
需要注意的是,因為標(biāo)準(zhǔn)化的緣故,timedelta.max > -timedelta.min,-timedelta.max 不可以表示一個 timedelta 類對象。
from datetime import timedeltatimedelta.resolutiondatetime.timedelta(microseconds=1)
3、實例屬性(只讀)
timedelta.days
-999999999 至 999999999 ,含999999999
from datetime import timedeltadelta = timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000, minutes=5,hours=8,weeks=2)deltadatetime.timedelta(days=64, seconds=29156, microseconds=10)delta.days64timedelta.seconds
0 至 86399,包含86399delta.seconds29156
timedelta.microseconds
0 至 999999,包含999999
delta.microseconds104、實例方法
timedelta.total_seconds()
作用:返回時間間隔包含了多少秒。等價于 td / timedelta(seconds=1)。對于其它單位可以直接使用除法的形式 (例如 td / timedelta(microseconds=1))。
需要注意的是,時間間隔較大時,這個方法的結(jié)果中的微秒將會失真(大多數(shù)平臺上大于270年視為一個較大的時間間隔)。
from datetime import timedeltayear = timedelta(days=1)timedelta.total_seconds(year)86400.0
5、支持的運算
運算 | 結(jié)果 |
t1 = t2 + t3 | t2 和 t3 的和。 運算后 t1-t2 == t3 and t1-t3 == t2 必為真值。(1) |
t1 = t2 - t3 | t2 減 t3 的差。 運算后 t1 == t2 - t3 and t2 == t1 + t3 必為真值。 (1)(6) |
t1 = t2 * i or t1 = i * t2 | 乘以一個整數(shù)。運算后假如 i != 0 則 t1 // i == t2 必為真值。 |
In general, t1 * i == t1 * (i-1) + t1 is true. (1) | |
t1 = t2 * f or t1 = f * t2 | 乘以一個浮點數(shù),結(jié)果會被舍入到 timedelta 最接近的整數(shù)倍。 精度使用四舍五偶入奇不入規(guī)則。 |
f = t2 / t3 | 總時間 t2 除以間隔單位 t3 (3)。 返回一個 float 對象。 |
t1 = t2 / f or t1 = t2 / i | 除以一個浮點數(shù)或整數(shù)。 結(jié)果會被舍入到 timedelta 最接近的整數(shù)倍。 精度使用四舍五偶入奇不入規(guī)則。 |
t1 = t2 // i or t1 = t2 // t3 | 計算底數(shù),其余部分(如果有)將被丟棄。在第二種情況下,將返回整數(shù)。 (3) |
t1 = t2 % t3 | 余數(shù)為一個 timedelta 對象。(3) |
q, r = divmod(t1, t2) | 通過 : q = t1 // t2 (3) and r = t1 % t2 計算出商和余數(shù)。q是一個整數(shù),r是一個 timedelta 對象。 |
+t1 | 返回一個相同數(shù)值的 timedelta 對象。 |
-t1 | 等價于 timedelta(-t1.days, -t1.seconds, -t1.microseconds), 和 t1* -1. (1)(4) |
abs(t) | 當(dāng) t.days >= 0``時等于 +\ *t*, 當(dāng) ``t.days < 0 時 -t 。 (2) |
str(t) | 返回一個形如 [D day[s], ][H]H:MM:SS[.UUUUUU] 的字符串,當(dāng) t 為負(fù)數(shù)的時候, D 也為負(fù)數(shù)。 (5) |
repr(t) | 返回一個 timedelta 對象的字符串表示形式,作為附帶正規(guī)屬性值的構(gòu)造器調(diào)用。 |
注:
1)結(jié)果正確,但可能會溢出。
2)結(jié)果正確,不會溢出。
3)除以0將會拋出異常 ZeroDivisionError 。
4)-timedelta.max 不是一個 timedelta 類對象。
5)timedelta 對象的字符串表示形式類似于其內(nèi)部表示形式被規(guī)范化。對于負(fù)時間增量,這會導(dǎo)致一些不尋常的結(jié)果。例如:
timedelta(hours=-5)datetime.timedelta(days=-1, seconds=68400)print(_)-1 day, 19:00:006)表達(dá)式 t2 - t3 通常與 t2 + (-t3) 是等價的,除非 t3 等于 timedelta.max; 在這種情況下前者會返回結(jié)果,而后者則會溢出。
from datetime import timedeltayear = timedelta(days=365)ten_years = 10 * yearten_yearsdatetime.timedelta(days=3650)ten_years.days // 36510nine_years = ten_years - yearnine_yearsdatetime.timedelta(days=3285)three_years = nine_years // 3three_years, three_years.days // 365(datetime.timedelta(days=1095), 3)
六、datetime.tzinfo(時區(qū))
class datetime.tzinfo
這是一個抽象基類,也就是說該類不應(yīng)被直接實例化。 請定義 tzinfo 的子類來捕獲有關(guān)特定時區(qū)的信息。
七、datetime.timezone
timezone 類是 tzinfo 的子類,它的每個實例都代表一個以與 UTC 的固定時差來定義的時區(qū)。
八、常量模塊
datetime.MINYEAR
date 或者 datetime 對象允許的最小年份。 常量 MINYEAR 是 1 。
import datetime datetime.MINYEAR1datetime.MAXYEAR
date 或 datetime 對象允許最大的年份。常量 MAXYEAR 是 9999 。
import datetimedatetime.MAXYEAR9999
|
|