前言
datetime
是python的內置模塊,用來處理日期和時間。
該模塊常用的類有:
類名 | 功能說明 |
---|---|
date | 日期對象 |
time | 時間對象 |
datetime | 日期時間對象 |
timedelta | 時間間隔 |
tzinfo | 時區信息對象 |
本文旨在講解datetime
模塊中datetime
類的使用方法。
datetime
對象是 date 與 time 的結合體,涵蓋了date
和time
對象的所有信息。
一、導入datetime
類
第一步,先導入datetime
類:
from datetime import datetime
二、構造datetime
對象
datetime(year,month,day,hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
參數范圍:
- MINYEAR <= year <= MAXYEAR
- 1 <= month <= 12
- 1 <= day <= 指定年月的天數
- 0 <= hour < 24
- 0 <= minute < 60
- 0 <= second < 60
- 0 <= microsecond < 1000000
實例:
datetime(2019,12,6,13,30,50)
# 輸出 : datetime.datetime(2019, 12, 6, 13, 30, 50)
三、類方法
datetime.today()
返回本地區當前日期時間datetime
對象
datetime.today()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.now(tz=None)
返回本地區當前日期時間datetime
對象,可以添加時區tz
默認無時區時,返回結果和datetime.today()
一致
datetime.now()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.utcnow()
返回UTC(同格林尼治時間)日期時間datetime
對象
datetime.now()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.fromtimestamp(timestamp, tz=None)
返回給定時間戳的datetime
對象,時區默認為空,返回當地日期時間,也可以指定時區
datetime.fromtimestamp(1575877756)
# 輸出 : datetime.datetime(2019, 12, 9, 15, 49, 16)
想獲取當前時間戳,可通過time
模塊的time
方法實現:
import time
time.time()
# 輸出:1575877756.4673727
datetime.utcfromtimestamp(timestamp)
返回給定時間戳的datetime
對象,日期時間默認為UTC(同格林尼治時間)
datetime.fromtimestamp(1575877756)
# 輸出 : datetime.datetime(2019, 12, 9, 7, 49, 16)
datetime.fromordinal(ordinal)
輸入參數為天數,返回從公元0年開始計數的年、月、日datetime
對象
比如輸入參數為365,則返回1-12-31
datetime.fromordinal(365)
# 輸出 : datetime.datetime(1, 12, 31, 0, 0)
datetime.combine(date, time, tzinfo=self.tzinfo)
拼接date
和time
對象,形成一個新的datetime
對象
可以輸入時區參數,否則默認為原time
的時區
date_ = datetime.today().date()
time_ = datetime.today().time()
datetime.combine(date_,time_)
# 輸出 : datetime.datetime(2019, 12, 9, 16, 12, 56, 914484)
datetime.strptime(date_string, format)
將格式化日期時間字符串,轉換為datetime
對象,可以轉換日期、時間、日期時間
datetime.strptime('2019-11-05','%Y-%m-%d')
# 輸出 : datetime.datetime(2019, 11, 5, 0, 0)
datetime.strptime('09:30:50','%H:%M:%S')
# 輸出 : datetime.datetime(1900, 1, 1, 9, 30, 50)
datetime.strptime('2019-11-05 09:30:50','%Y-%m-%d %H:%M:%S')
# 輸出 : datetime.datetime(2019, 11, 5, 9, 30, 50)
四、實例方法
datetime.date()
返回date
對象
d = datetime(2019,12,6,13,30,50)
d.date()
# 輸出 : datetime.date(2019, 12, 6)
datetime.time()
返回time
對象
d = datetime(2019,12,6,13,30,50)
d.time()
# 輸出 : datetime.time(13, 30, 50)
datetime.timestamp()
對於給定的 datetime
對象返回時間戳
d = datetime(2019,12,6,13,30,50)
d.timestamp()
# 輸出 : 1575610250.0
datetime.weekday()
返回星期幾,星期一為 0,星期天為 6
d = datetime(2019,12,6,13,30,50)
d.weekday()
# 輸出 : 4
datetime.isoweekday()
返回星期幾,星期一為 1,星期天為 7
d = datetime(2019,12,6,13,30,50)
d.isoweekday()
# 輸出 : 5
datetime.isocalendar()
返回數組:(年、第多少周、星期幾)
d = datetime(2019,12,6,13,30,50)
d.isocalendar()
# 輸出 : (2019, 49, 5)
datetime.ctime()
返回日期時間的字符串表示
d = datetime(2019,12,6,13,30,50)
d.ctime()
# 輸出 : 'Fri Dec 6 13:30:50 2019'
datetime.strftime(date_string, format)
將datetime
對象轉換為格式化字符串
d = datetime.today()
datetime.strftime(d,'%Y-%m-%d %H:%M:%S')
# 輸出 : '2019-12-09 16:32:18'
datetime.toordinal()
返回從公元0年到指定datetime
的天數
d = datetime(2019,12,6,13,30,50)
d.toordinal()
# 輸出 : 737399
五、類實例屬性
datetime.year
返回給定datetime
對象的年份
d = datetime(2019,12,6,13,30,50)
d.year
# 輸出 : 2019
datetime.month
返回給定datetime
對象的月份
d = datetime(2019,12,6,13,30,50)
d.month
# 輸出 : 12
datetime.day
返回給定datetime
對象的天數(一個月的某天)
d = datetime(2019,12,6,13,30,50)
d.day
# 輸出 : 6
datetime.hour
返回給定datetime
對象的小時數(一天的某時)
d = datetime(2019,12,6,13,30,50)
d.hour
# 輸出 : 13
datetime.minute
返回給定datetime
對象的分鍾數(一小時的某分)
d = datetime(2019,12,6,13,30,50)
d.minute
# 輸出 : 30
datetime.second
返回給定datetime
對象的秒數(一分鍾的某秒)
d = datetime(2019,12,6,13,30,50)
d.second
# 輸出 : 50
datetime.microsecond
返回給定datetime
對象的毫秒數(一分鍾的某秒)
d = datetime(2019,12,6,13,30,50,3000)
d.microsecond
# 輸出 : 3000
datetime.tzinfo
返回datetime
對象的時區,前提是在創建datetime
對象時需傳入tzinfo
參數,如果沒有傳入則返回值為None
。
# 獲取一個含有時區的datetime對象
import pytz
sh = pytz.timezone('Asia/Shanghai')
d = datetime(2018, 11, 1, hour=8, tzinfo=sh)
d.tzinfo
# 輸出 : <DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
六、結論
本文介紹了datetime
模塊中datetime
類的各種方法和屬性,代碼案例豐富,分門別類,方便使用時查找。