python的datetime模組
阿新 • • 發佈:2019-02-05
一 Python 中 日期型別 與字串互轉的問題
- 1 字串 轉成 datetime 型別
- 2 datetime 型別 轉成 字串
二 日期相加減的問題
三 datetime模組
1.datetime中的常量
- datetime.MINYEAR,表示datetime所能表示的最小年份,MINYEAR = 1。
- datetime.MAXYEAR,表示datetime所能表示的最大年份,MAXYEAR = 9999。
2.datetime中的類
- datetime.date:表示日期的類。常用的屬性有year, month, day;
- datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;
- datetime.datetime:表示日期時間。
- datetime.timedelta:表示時間間隔,即兩個時間點之間的長度。
- datetime.tzinfo:與時區有關的相關資訊。
3.date類
date類表示一個由年、月、日組成的日期。
①類方法與類屬性
date類定義了一些常用的類方法與類屬性,方便我們操作:
- date.max、date.min:date物件所能表示的最大、最小日期;
- date.resolution:date物件表示日期的最小單位。這裡是天。
- date.today():返回一個表示當前本地日期的date物件;
- date.fromtimestamp(timestamp):根據給定的時間戮,返回一個date物件;
- datetime.fromordinal(ordinal):將Gregorian日曆時間轉換為date物件;(Gregorian Calendar :一種日曆表示方法,類似於我國的農曆,西方國家使用比較多,此處不詳細展開討論。)
②例項方法和屬性
date提供的例項方法和屬性:
- date.year、date.month、date.day:年、月、日;
- date.replace(year, month,day):生成一個新的日期物件,用引數指定的年,月,日代替原有物件中的屬性。(原有物件仍保持不變)
- date.timetuple():返回日期對應的time.struct_time物件;
- date.toordinal():返回日期對應的Gregorian Calendar日期;
- date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此類推;
- data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此類推;
- date.isocalendar():返回格式如(year,month,day)的元組;
- date.isoformat():返回格式如’YYYY-MM-DD’的字串;
- date.strftime(fmt):自定義格式化字串。在下面詳細講解。
③date支援的其他操作
- date2 = date1 + timedelta #日期加上一個間隔,返回一個新的日期物件)
- date2 = date1 - timedelta #日期隔去間隔,返回一個新的日期物件
- timedelta = date1 - date2 #兩個日期相減,返回一個時間間隔物件
- date1 < date2 #兩個日期進行比較
4.Time類
time類表示時間,由時、分、秒以及微秒組成。
①time類定義的類屬性
- time.min、time.max:time類所能表示的最小、最大時間。其中,time.min = time(0, 0, 0, 0),time.max = time(23, 59, 59, 999999);
- time.resolution:時間的最小單位,這裡是1微秒;
②time類提供的例項方法和屬性
- time.hour、time.minute、time.second、time.microsecond:時、分、秒、微秒;
- time.tzinfo:時區資訊;
- time.replace([ hour[ , minute[ , second[ ,microsecond[ , tzinfo] ] ] ] ] ):建立一個新的時間物件,用引數指定的時、分、秒、微秒代替原有物件中的屬性(原有物件仍保持不變);
- time.isoformat():返回型如”HH:MM:SS”格式的字串表示;
- time.strftime(fmt):返回自定義格式化字串。在下面詳細介紹;
像date一樣,也可以對兩個time物件進行比較,或者相減返回一個時間間隔物件。
5.datetime類
datetime是date與time的結合體,包括date與time的所有資訊。
①datetime類定義的類屬性與方法
- datetime.min、datetime.max:datetime所能表示的最小值與最大值;
- datetime.resolution:datetime最小單位;
- 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物件;
②datetime類提供的例項方法與屬性
- datetime.year、month、day、hour、minute、second、microsecond、tzinfo:年、月、日、時、分、秒、毫秒、時區;
- datetime.date():獲取date物件。
- datetime.time():獲取time物件。
- datetime. replace([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ ,tzinfo] ] ] ] ] ] ] ]): 返回一個替換了指定日期時間欄位的新datetime物件。
- datetime.timetuple ():返回一個時間元素, 等價於time.localtime()。
- datetime. utctimetuple():返回UTC時間元組物件, 等價於time.localtime()。
- datetime. toordinal ():返回日期對應的Gregorian Calendar 日期。
- datetime. weekday ():返回 0 ~ 6 表示星期幾(星期一是0,依此類推)。
- datetime. isocalendar ():返回一個三元組格式 (year, month, day)。
- datetime. isoformat ([ sep] ):返回一個 ISO 8601 格式的日期字串,如 “YYYY-MM-DD”的字串。
- datetime. ctime():返回一個日期時間的C格式字串,等效於time.ctime(time.mktime(dt.timetuple()));
- datetime. strftime (format):返回自定義格式化字串表示日期。
像date一樣,也可以對兩個datetime物件進行比較,或者相減返回一個時間間隔物件,或者日期時間加上一個間隔返回一個新的日期時間物件。
6.timedelta與tzinfo類
①timedelta類
datetime.timedelta物件代表兩個時間之間的的時間差,兩個date或datetime物件相減時可以返回一個timedelta物件。
timedelta包含資料days、seconds、microseconds,表示天數、秒數、微秒數,包含方法total_seconds() ,表示時間間隔的總秒數。
②tzinfo類
tzinfo:與時區有關的相關資訊。
一些具體案例情況
"""
時間模組的demo
這裡主要介紹了
1.字串 轉成 datetime 型別
2.datetime 型別 轉成 字串
"""
# 字串 轉成 datetime 型別
"""
def strptime(cls, date_string, format):pass 這個函式 需要傳入兩個引數 date_string 即日期字串, format 即日期的格式
"""
import datetime
datestr1 = '2017-03-28'
datestr2 = '2017-03-31'
date1 = datetime.datetime.strptime(datestr1, '%Y-%m-%d')
date2 = datetime.datetime.strptime(datestr2, '%Y-%m-%d')
diff_days = (date2 - date1)
diff_days = (date2 - date1).days
print(diff_days)
print(date1.year)
print(type(datestr1))
print('---------------------------------------------')
結果如下:
3
2017
<class 'str'>
---------------------------------------------
"""
def strftime(self, fmt: Union[str, unicode]) -> str: ...
"""
# datetime 型別 轉成 字串
import datetime
date_0 = datetime.datetime.now()
datestr = date_0.strftime('%Y-%m-%d')
datestr2 = str(date_0)
dt, _ = datestr2.split('.')
print(date_0)
print(datestr)
print(datestr2)
print(dt)
print(type(date_0))
print('---------------------------------------------')
結果如下:
2018-07-17 13:12:26.216551
2018-07-17
2018-07-17 13:12:26.216551
2018-07-17 13:12:26
<class 'datetime.datetime'>
---------------------------------------------
"""
日期相加減的問題
在datetime模組,有一個類 timedelta 來進行日期的相加減操作
delta:希臘語字母表第四字母δ,[數]變數增量
"""
from datetime import datetime,date,time,timedelta
dt = datetime(2018, 3, 1, 19, 40, 30)
dt = datetime(2018, 3, 1, 19, 40, 30, 356102)
print(dt,type(dt))
結果如下:
2018-03-01 19:40:30.356102 <class 'datetime.datetime'>
#1. 一個日期 向前或向後推遲幾天
dt2 = dt+timedelta(days=5)
print(dt2)
#1. 一個日期 向前或向後推遲幾小時
now = datetime.now()
print(now)
hours = timedelta(hours=3)
next = now+hours
print(next)
結果如下:
2018-03-06 19:40:30.356102
2018-07-17 13:12:26.216551
2018-07-17 16:12:26.216551
#3 同理 還可以支援 seconds , milliseconds,minutes,weeks 分別是 秒 ,毫秒, 分鐘, 周...
def __new__(cls, days=None, seconds=None, microseconds=None, milliseconds=None, minutes=None,
hours=None, weeks=None): # known case of datetime.timedelta.__new__)
pass
參考完檔: