隨心所欲地用Python處理時間(1&2&3&4)
datetime模塊提供了用于處理日期和時間的類和對應(yīng)的方法,一般用于處理年、月、日、時、分、秒的統(tǒng)計和計算等需求。在支持日期時間數(shù)學(xué)運(yùn)算的同時,實(shí)現(xiàn)的關(guān)注點(diǎn)更著重于如何能夠更有效地解析其屬性用于格式化輸出和數(shù)據(jù)操作。
學(xué)習(xí)該模塊,首先要有一個概念:日期和時間,要不然會混亂,這里進(jìn)行狹義的理解即可:日期是日期,時間是時間,日常生活中有時候并沒有很好的去區(qū)分。
import?time?time.time()?1625483470.3409266二、datetime.date類
1、date類介紹
import?datetimet?=?datetime.date(2019,8,26)print(type(t))print(t.day,t.month,t.year)?#?26?8?2019 from?datetime?import?dateprint(dir(date))['ctime',?'day',?'fromisocalendar',?'fromisoformat',?'fromordinal',?'fromtimestamp',?'isocalendar',?'isoformat',?'isoweekday',?'max',?'min',?'month',?'replace',?'resolution',?'strftime',?'timetuple',?'today',?'toordinal',?'weekday',?'year']
2、類方法
date.today()
from?datetime?import?date?date.today()datetime.date(2021,?7,?4)date.fromtimestamp()
from?datetime?import?datedate.fromtimestamp(1339119900000/1e3).strftime('%Y-%m-%d?%H:%M')'2012-06-07?00:00'date.fromtimestamp(1339120800000/1e3).strftime('%Y-%m-%d?%H:%M')'2012-06-07?00:00'
date.fromordinal()
from?datetime?import?dated?=?date.fromordinal(730920)?#?730920th?day?after?1.?1.?0001ddatetime.date(2002,?3,?11)
date.fromisoformat()
from?datetime?import?datedate.fromisoformat('2019-12-04')datetime.date(2019,?12,?4)
d.isoformat()'2002-03-11'
date.fromisocalendar()
date.fromisocalendar(2021,?42,?3)datetime.date(2021,?10,?20)
date.min
from?datetime?import?datedate.mindatetime.date(1,?1,?1)
date.max
from datetime import datedate.maxdatetime.date(9999, 12, 31)
date.resolution
from datetime import datedate.resolutiondatetime.timedelta(days=1)
date.year
from datetime import dated = date.today()#生成一個date對象ddatetime.date(2021, 7, 5)d.year2021
date.month
#接上述案例d.month7
date.day
#接上述案例d.day5
3、實(shí)例方法
date.replace()
from?datetime?import?dated = date(2002, 12, 31)d.replace(day=26)datetime.date(2002, 12, 26)
date.timetuple()
d?=?date(2002,?12,?31)date.timetuple(d)time.struct_time(tm_year=2002, tm_mon=12, tm_mday=31,tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=365,tm_isdst=-1)
date.toordinal()
d = date(1, 1, 1)d.toordinal()1d = date(2002, 12, 31)d.toordinal()731215date.fromordinal(d.toordinal())datetime.date(2002, 12, 31)
date.weekday()
date(2002,?12,?4).weekday()2
date.isoweekday()
date(2002,?12,?4).isoweekday()3
date.isocalendar()
from datetime import datedate(2003, 12, 29).isocalendar()(2004, 1, 1) # 舊版本datetime.IsoCalendarDate(year=2004,?week=1,?weekday=1)?#?新版本date(2004, 1, 4).isocalendar()datetime.IsoCalendarDate(year=2004,?week=1,?weekday=7)
date.isoformat()
from?datetime?import?datedate(2021,?10,?1).isoformat()'2021-10-01'
date.__str__()
from datetime import datedate(2021, 10, 1).__str__()'2021-10-01'str(date(2021, 10, 1))'2021-10-01'
date.ctime()
from datetime import datedate(2021,?10,?1).ctime()'Fri?Oct??1?00:00:00?2021'
d=date(2021, 10, 1)import timetime.ctime(time.mktime(d.timetuple()))'Fri?Oct??1?00:00:00?2021'
date.strftime()
import?datetimedt=datetime.date(2021, 10, 1)#創(chuàng)建一個日期對象dt.strftime("%Y-%m-%d")'2021-10-01'dt.strftime("%Y年%m月%d日")'2021年10月01日'dt.strftime("%Y//%m//%d")'2021//10//01'dt.strftime("%Y-%m-%d %H:%M")'2021-10-01 00:00'dt.strftime("%A, %d. %B %Y %I:%M%p")'Friday, 01. October 2021 12:00AM'
date.__format__(format)
import datetimedt=datetime.date(2021, 10, 1)#創(chuàng)建一個日期對象dt.__format__("%Y年%m月%d日")'2021年10月01日'
4、支持的運(yùn)算
?
三、datetime.time類
1、time類概述
作用:一個?time?對象代表某日的(本地)時間,它獨(dú)立于任何特定日期,并可通過?tzinfo?對象來調(diào)整。
語 法:
datetime.time(hour=0, minute=0, second=0, microsecond=0,
tzinfo=None, *, fold=0)
參 數(shù):
所有參數(shù)都是可選的,tzinfo?可以是?None,或者是一個?tzinfo?子類的實(shí)例。 其余的參數(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ù)運(yùn)算。
from datetime import timetime.resolutiondatetime.timedelta(microseconds=1)
3、time類實(shí)例屬性
time.hour
取值范圍是?range(24)。
from datetime import timet = time(hour=12, minute=34, second=56, microsecond=123456)t.hour12
time.minute
取值范圍是?range(60)。
t.minute34
time.second
取值范圍是?range(60)。
t.second56
time.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類實(shí)例方法
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 秒。
語法:
datetime.datetime(year, month, day, hour=0, minute=0, second=0,
microsecond=0, tzinfo=None, *, fold=0)
參數(shù):year,?month?和?day?參數(shù)是必須的。?tzinfo?可以是?None?或者是一個?tzinfo?子類的實(shí)例。 其余的參數(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)7, 6, 11, 27, 25, 247169)#取整數(shù)后,精確到秒,否則精確到微秒,一微秒=百萬分之一秒datetime.datetime.fromtimestamp(1625542045)7, 6, 11, 27, 25)#例如,使用日期2008-12-27午夜UTC(自紀(jì)元起40*356*86400秒)* 356 * 86400)12, 27, 1, 0)
datetime.utcfromtimestamp()
作用:將時間戳表示為本地時間的UTC日期時間對象
語法:datetime.datetime.utcfromtimestamp(timestamp)
import datetime
#獲取本地當(dāng)前時間
dt=datetime.datetime.now()
#獲取時間戳
dt.timestamp()
1625549035.048533
datetime.datetime.utcfromtimestamp(dt.timestamp())
datetime.datetime(2021, 7, 6, 5, 23, 55, 48533)
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、實(shí)例屬性-只讀
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).month5
datetime.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).hour13
datetime.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).second0
datetime.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).fold
datetime.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實(shí)例方法
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?實(shí)例?d?為簡單型,這類似于?d.timetuple(),不同之處在于?tm_isdst?會強(qiáng)制設(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?實(shí)例的 POSIX 時間戳。 此返回值是與?time.time()?返回值類似的?float?對象。
用法:datetime.timestamp()
from datetime import datetimedatetime(2021, 5, 4).timestamp()1620057600.0
datetime.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()2
datetime.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?實(shí)例?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?對象 |
類型 | 實(shí)例方法 | 類方法 |
方法 | 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'
?
···? END? ···
