返回目錄html
datetime模塊能夠處理時間和日期,其中包含如下類:date類、time對象、datetime對象、timedelt對象、tzinfo對象。python
● date類cors
date類用於處理日期。函數
操做 | 說明 |
---|---|
建立date對象 | |
date(year, month, day) | 建立一個新的日期對象,返回的date對象是不可變的。入參year, month, day分別整數形式的年、月、日。 |
類屬性 | |
date.min | 可以表示的最小日期:datetime.date(1,1,1)。 |
date.max | 可以表示的最大日期:datetime.date(9999,12,31)。 |
date.resolutiom | 不相等的日期之間最小可解析的差值:datetime.timedelta(1) |
類方法 | |
date.today() | 返回當前日期的date對象。 |
date.fromtimestamp(timestamp) | 返回對應時間戳timestamp的date對象,timestamp是time.time()函數的返回值。 |
date.fromordinal(ordinal) | 返回從最小日期(公元1年1月1日)開始算起的ordinal天的date對象。 |
實例屬性 | |
d.year | 實例日期對應的年。 |
d.month | 實例日期對應的月。 |
d.day | 實例日期對應的日。 |
實例方法 | |
d.weekday() | 返回實例日期對應的周幾,範圍:0~6(0表示週一) |
d.isoweekday() | 返回實例日期對應的周幾,範圍:1~7(1表示週一) |
d.ctime() | 返回一個字符串,格式與「time模塊」中的time.ctime()的格式相同。 |
d.isoformat() | 返回一個字符串(ISO 8601格式),形式爲:'YYYY-MM-DD' |
d.isocalendar() | 返回一個元組:(iso_year, iso_week, iso_weekday),iso_weekday範圍爲:1~7,iso_week範圍爲:1~53(當年第一個星期四的周爲第1周)。 |
d.strftime(format) | 返回一個字符串,表示日期的格式與「time模塊」中的time.strftime()相同,只能用於1900年之後的日期。 format格式說明 |
d.timetuple() | 返回適合函數在time模塊中使用的time_struct對象,其中小時、分、秒設爲0。 |
d.toordinal() | 將實例日期轉換爲一個從公元1年1月日起的天數值。 |
d.replace([year [,month [,day]]]) | 返回一個新的date對象,並使用入參值代替原有值。 |
● time類ui
time類用於處理時間。es5
操做 | 說明 |
---|---|
建立time對象 | |
time(hour [,minute [,second [,microsecond [,tzinfo]]]]) | 建立一個新的時間對象,返回的time對象是不可變的。入參micorsecond是微秒,入參tzinfo是一個時區tzinfo類的實例,詳見後述。 |
類屬性 | |
t.min | 可以表示的最小時間:datetime.time(0,0) |
t.max | 可以表示的最大時間:datetime.time(23,59,59,999999) |
t.resolution | 不等的time對象之間的最小可解析的差值:datetime.time(0,0,1) |
實例屬性 | |
d.hour | 實例日期對應的小時。 |
d.minute | 實例日期對應的分。 |
d.second | 實例日期對應的秒。 |
d.microsecond | 實例日期對應的微秒。 |
d.tzinfo | 實例日期對應的tzinfo時區。 |
實例方法 | |
t.isoformat() | 返回一個字符串,形式爲:"HH:MM:SS.mmmmmm",若是微秒爲0,則省略微秒部分。若是提供了時區信息,會再加上一個偏移量。 |
t.strftime(format) | 返回一個字符串,格式與「time模塊」中的time.strftime()相同。 format格式說明 |
t.replace(hour [,minute [,second [,microsecond [,tzinfo]]]]) | 返回一個新的time對象,並使用入參提供的值替代原實例中的值。 |
t.dst() | 返回t.tzinfo.dst(None)的值(夏令時),是一個timedelta對象。若是未設置時區,則返回None。 |
t.tzname() | 返回t.tzinfo.tzname()的值,若是未設置時區,則返回None。 |
t.utcoffset() | 返回t.tzinfo.utcoffset(None)的值,是一個timedelta對象。若是未設置時區,則返回None。 |
● datetime類spa
datetime類用於處理時間和日期。code
操做 | 說明 |
---|---|
建立datetime對象 | |
datetime(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]]) | 建立一個新的datetime對象,入參含義同date對象和time對象。返回的datetime對象是不可變的。 |
類屬性 | |
datetime.min | 可以表示的最小時間:datetime.datetime(1,1,1,0,0) |
datetime.max | 可以表示的最大時間:datetime.datetime(9999,12,31,23,59,59,999999) |
datetime.resolution | 不等的datetime對象之間的最小可解析的差值:datetime.timedelta(0,0,1) |
類方法 | |
datetime.now([tz]) | 基於當前本地日期時間建立一個datetime對象,tz是可選時區信息。 |
datetime.utcnow() | 基於當前的UTC日期時間建立一個datetime對象。 |
datetime.combine(date, time) | 經過組合date對象和time對象,建立出一個datetime對象。 |
datetime.fromordinal() | 經過指定序數天數,建立一個datetime對象,時間數值均爲0。 |
datetime.fromtimestamp(timestamp [,tz]) | 基於「time模塊」中的time.time()函數返回的時間戳,建立一個datetime對象,tz是可選時區信息。 |
datetime.utcfromtimestamp(timestamp) | 基於「time模塊」中的time.gmtime()函數返回的時間戳,建立一個datetime對象。 |
datetime.strptime(datestring, format) | 根據format中的日期格式,解析datestring中的日期字符串,從而建立一個datetime對象。解析使用「time模塊」中的strptime()函數。 format格式說明 |
實例屬性 | |
d.year | 實例對應的年。 |
d.month | 實例對應的月。 |
d.day | 實例對應的日。 |
d.hour | 實例對應的小時。 |
d.minute | 實例對應的分。 |
d.second | 實例對應的秒。 |
d.microsecond | 實例對應的微秒。 |
d.tzinfo | 實例對應的tzinfo時區。 |
實例方法 | |
d.date() | 返回一個具備相同日期的date對象。 |
d.time() | 返回一個具備相同時間的time對象,沒有時區信息。 |
d.utctimetuple() | 返回time.struct_time對象。 |
d.timetz() | 使用相同的時間和時區信息返回time對象。 |
t.strftime(format) | 返回一個字符串,格式與「time模塊」中的time.strftime()相同。 format格式說明 |
d.astimezone(tz) | 返回一個位於不一樣時區tz中的新datetime對象,新對象的UTC標準時間同本實例的UTC標準時間。 |
d.replace(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]]) | 返回一個新的datetime對象,並使用入參值代替原有值。 |
● timedelta類與日期運算orm
timedelta對象表示兩個日期或時間之間的差值(時間跨度)。htm
操做 | 說明 |
---|---|
建立timedelta | |
timedelta([days [,seconds [,microsecond [,miliseconds [,minutes [,hours [,weeks]]]]]]]) | 建立表示兩個日期時間之差的timedelta對象,只有days, seconds, microsecond有意義,它們用於在內部表示差值。若是提供其餘參數,它們將被轉換爲以上三值。返回的time對象是不可變的。 |
類屬性 | |
timedelta.min | 可以表示的最大跨度的負timedelta值:datetime.timedelta(-999999999) |
timedelta.max | 可以表示的最大跨度的正timedelta值:datetime.timedelta(days=999999999,hours=23,minutes59,seconds=59,microseconds=999999) |
timedelta.resolution | 不等的timedelta對象之間的最小可解析的差值:datetime.timedelta(microseconds=1) |
實例屬性 | |
td.days | 實例對應的天數差。 |
td.seconds | 實例對應的秒數差(一天以內)。 |
td.microseconds | 實例對應的微秒差(一天以內)。 |
timedelta自己可進行的數學運算:
操做 | 描述 | 示例 |
---|---|---|
+ | 兩個時間跨度相加 | td3 = td1 + td2 |
- | 兩個時間跨度相減 | td3 = td1 - td2 |
* | 時間跨度乘以整數 | td2 = td1 * i; td2 = i * td1 |
// | 時間跨度地板除以整數 | td2 = td1 // i |
+= | 一元加法 | td2 += td1 |
-= | 一元減法 | td2 -= td1 |
- | 取負 | td2 = -td1 |
abs() | 取絕對值 | td2 = abs(td1) |
< | 小於 | td1 < td2 |
<= | 小於等於 | td1 <= td2 |
== | 相等 | td1 == td2 |
!= | 不等 | td1 != td2 |
> | 大於 | td1 > td2 |
>= | 大於等於 | td1 >= td2 |
date對象、datetime對象、時間跨度timedelta對象之間能夠互相運算:
操做 | 描述 | 示例 |
---|---|---|
跨度 = 日期 - 日期 | 返回timedelta對象 | td = date1 - date2 |
日期 = 日期 - 跨度 | 返回datetime對象 | date2 = date1 - td |
日期 = 日期 + 跨度 | 返回datetime對象 | date2 = date1 + td |
< | 日期比較:小於 | date1 < date2 |
<= | 日期比較:小於 | date1 <= date2 |
== | 日期比較:相等 | date1 == date2 |
!= | 日期比較:不等 | date1 != date2 |
> | 日期比較:大於 | date1 > date2 |
>= | 日期比較:大於等於 | date1 >= date2 |
日期增長1天的計算:
import datetime the_day = datetime.datetime(2019,1,1) one_day = datetime.timedelta(days=1) the_next_day = the_day + one_day the_next_day.date().isoformat() # 結果爲:'2019-01-02'
● tzinfo對象。
tzinfo僅僅是一個基類,經過繼承tzinfo類和實現如下方法可建立一個時區。
操做 | 說明 |
---|---|
tz.tzname(dt) | 返回表明時區名稱的字符串,如:'Asia/Shanghai',入參dt是一個datetime對象或None。 |
tz.utcoffset(dt) | 返回timedelta對象,表示本地時間與UTC時間的偏移,單位是分鐘。入參dt是一個datetime對象或None。 |
tz.fromutc(dt) | 將入參dt(datetime對象)從UTC時間轉換爲本地時區,並返回一個新的datetime對象,此方法由datetime對象上的astimezne()方法調用,tzinfo已提供了默認實現,通常沒有必要從新定義此方法。 |
tz.dst(dt) | 返回一個timedelta對象,表明夏令時(Daylight Saving Time)調整。若是沒有關於夏令時的信息,則返回None。入參dt是一個datetime對象或None。 |
示例如何定義一個新的時區:
import datetime class MyZone(datetime.tzinfo): TZOFFSET = 8 # 與UTC相差8小時 def utcoffset(self, dt): return datetime.timedelta(hours=TZOFFSET) def tzname(self, dt): return 'Asia/Shanghai'
time模塊提供與時間相關的各類函數。在Python中,測量時間的方法是計算從「紀元開始」的秒數,在time=0秒的時刻稱爲:epoch。在類UNIX上,「紀元開始」爲1970年1月1日,其餘系統上由time.gmtime(0)決定。
● struct_time對象
time模塊常常會用到struct_time對象,它具備如下屬性:
屬性 | 值 | 屬性 | 值 |
---|---|---|---|
tm_year | 年份4位數 | tm_wday | 星期幾(0~6),0表示星期一 |
tm_mon | 月(1~12) | tm_yday | 一年中第幾天(1~366) |
tm_mday | 日(1~31) | tm_isdst | 夏令時(-一、0、1) |
tm_hour | 時(0~23) | ||
tm_min | 分(0~59) | ||
tm_sec | 秒(0~61) |
time模塊的常量和函數:
名稱 | 說明 |
---|---|
模塊常量 | |
tzname | 包含「本地時區」和「本地夏令時時區」的名稱的元組。 |
timezone | 本地的(非夏令時)時區。 |
altzone | 夏令時期間使用的時區。 |
daylight | 若是定義了夏令時時區,它將被設爲一個非0值。 |
函數 | |
time.time() | 返回當前UTC時間,形式是從「紀元開始」的秒數(浮點數)。 |
time.mktime(tuple) | 入參爲一個struct_time對象(或相似的元組),將其轉換爲從「紀元開始」的秒數(浮點數)。若是輸入的不是有效時間,將引起OverflowError異常。 |
time.ctime([secs]) | 將從「紀元開始」計算的秒數形式的時間,轉換爲表明本地時間的字符串。與asctime(localtime(secs))相同。若是省略入參secs,就會使用當前時間。 |
time.asctime([tuple]) | 將gmtime()或localtime()函數返回的時間元組,轉換爲'Mon Jan 1 12:00:00 2019'格式的字符串。若是省略入參secs,就會使用當前時間。 |
time.gmtime([secs]) | 將從「紀元開始」計算的秒數形式的時間,轉換爲UTC時間,返回爲struct_time對象。若是省略入參secs,就會使用當前時間。 |
time.localtime([secs]) | 將從「紀元開始」計算的秒數形式的時間,轉換爲本地時區時間,返回爲struct_time對象。若是省略入參secs,就會使用當前時間。 |
time.strftime(format [,tm]) | 將一個struct_time格式的時間,轉換爲format定義的字符串形式。 format格式說明 |
time.strptime(string [,format]) | 解析一個表明時間的字符串,而後返回一個struct_time對象。format格式默認爲'%a %b %d %H:%M:%S %Y'。若是不能解析字符串,就會引起ValueError異常。 format格式說明 |
time.sleep(secs) | 讓當前進程進入睡眠狀態並持續secs秒鐘,secs是一個浮點數。 |
time.tzset() | 基於UNIX上TZ環境變量的值重置時區設置。 |
指令 | 含義 | 指令 | 含義 |
---|---|---|---|
%Y | 年(四位數) | %c | 地區的日期時間完整表示,如:'Sat Jan 1 00:00:00 2000 ' |
%y | 年(2位數) | %x | 本地區的日期表示,如:'12/31/99' |
%m | 月(01~12) | %X | 本地區的時間表示,如:'01:02:03' |
%d | 日(01~31) | %a | 地區縮寫形式的星期幾字符串 |
%H | 時(00~23) | %A | 地區完整的星期幾字符串 |
%I | 時(01~12) | %b | 地區縮寫形式的月份字符串 |
%M | 分(00~59) | %B | 地區完整形式的月份字符串 |
%S | 秒(00~59) | %Z | 時區名稱(如不存在則爲空字符串) |
%p | 上午或下午(AM / PM) | %% | 百分號字符 |
%w | 星期幾(0~6),0表示星期天 | ||
%j | 一年中第幾天(001~366) | ||
%U | 一年中第幾周(00~53),星期天爲首日 | ||
%W | 一年中第幾周(00~53),星期一爲首日 |