一文搞懂python datetime模塊-日期時間處理

前言

datetime是python的內(nèi)置模塊,用來處理日期和時間。
該模塊常用的類有:

類名 功能說明
date 日期對象
time 時間對象
datetime 日期時間對象
timedelta 時間間隔
tzinfo 時區(qū)信息對象

本文旨在講解datetime模塊中datetime類的使用方法。
datetime對象是 date 與 time 的結合體,涵蓋了datetime對象的所有信息。

一、導入datetime

第一步,先導入datetime類:

from datetime import datetime

二、構造datetime對象

datetime(year,month,day,hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

參數(shù)范圍:

  • MINYEAR <= year <= MAXYEAR
  • 1 <= month <= 12
  • 1 <= day <= 指定年月的天數(shù)
  • 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)

三、類方法

  1. datetime.today()

返回本地區(qū)當前日期時間datetime對象

datetime.today()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. datetime.now(tz=None)

返回本地區(qū)當前日期時間datetime對象,可以添加時區(qū)tz
默認無時區(qū)時,返回結果和datetime.today()一致

datetime.now()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. datetime.utcnow()

返回UTC(同格林尼治時間)日期時間datetime對象

datetime.now()
# 輸出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. datetime.fromtimestamp(timestamp, tz=None)

返回給定時間戳的datetime對象,時區(qū)默認為空,返回當?shù)厝掌跁r間,也可以指定時區(qū)

datetime.fromtimestamp(1575877756)
# 輸出 : datetime.datetime(2019, 12, 9, 15, 49, 16)

想獲取當前時間戳,可通過time模塊的time方法實現(xiàn):

import time
time.time()
# 輸出:1575877756.4673727
  1. datetime.utcfromtimestamp(timestamp)

返回給定時間戳的datetime對象,日期時間默認為UTC(同格林尼治時間)

datetime.fromtimestamp(1575877756)
# 輸出 : datetime.datetime(2019, 12, 9, 7, 49, 16)
  1. datetime.fromordinal(ordinal)

輸入?yún)?shù)為天數(shù),返回從公元0年開始計數(shù)的年、月、日datetime對象
比如輸入?yún)?shù)為365,則返回1-12-31

datetime.fromordinal(365)
# 輸出 : datetime.datetime(1, 12, 31, 0, 0)
  1. datetime.combine(date, time, tzinfo=self.tzinfo)

拼接datetime對象,形成一個新的datetime對象
可以輸入時區(qū)參數(shù),否則默認為原time的時區(qū)

date_ = datetime.today().date()
time_ = datetime.today().time()
datetime.combine(date_,time_)
# 輸出 : datetime.datetime(2019, 12, 9, 16, 12, 56, 914484)
  1. 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)

四、實例方法

  1. datetime.date()

返回date對象

d = datetime(2019,12,6,13,30,50)
d.date()
# 輸出 : datetime.date(2019, 12, 6)
  1. datetime.time()

返回time對象

d = datetime(2019,12,6,13,30,50)
d.time()
# 輸出 : datetime.time(13, 30, 50)
  1. datetime.timestamp()

對于給定的 datetime對象返回時間戳

d = datetime(2019,12,6,13,30,50)
d.timestamp()
# 輸出 : 1575610250.0
  1. datetime.weekday()

返回星期幾,星期一為 0,星期天為 6

d = datetime(2019,12,6,13,30,50)
d.weekday()
# 輸出 : 4
  1. datetime.isoweekday()

返回星期幾,星期一為 1,星期天為 7

d = datetime(2019,12,6,13,30,50)
d.isoweekday()
# 輸出 : 5
  1. datetime.isocalendar()

返回數(shù)組:(年、第多少周、星期幾)

d = datetime(2019,12,6,13,30,50)
d.isocalendar()
# 輸出 : (2019, 49, 5)
  1. datetime.ctime()

返回日期時間的字符串表示

d = datetime(2019,12,6,13,30,50)
d.ctime()
# 輸出 : 'Fri Dec  6 13:30:50 2019'
  1. datetime.strftime(date_string, format)

datetime對象轉換為格式化字符串

d = datetime.today()
datetime.strftime(d,'%Y-%m-%d %H:%M:%S')
# 輸出 : '2019-12-09 16:32:18'
  1. datetime.toordinal()

返回從公元0年到指定datetime的天數(shù)

d = datetime(2019,12,6,13,30,50)
d.toordinal()
# 輸出 : 737399

五、類實例屬性

  1. datetime.year

返回給定datetime對象的年份

d = datetime(2019,12,6,13,30,50)
d.year
# 輸出 : 2019
  1. datetime.month

返回給定datetime對象的月份

d = datetime(2019,12,6,13,30,50)
d.month
# 輸出 : 12
  1. datetime.day

返回給定datetime對象的天數(shù)(一個月的某天)

d = datetime(2019,12,6,13,30,50)
d.day
# 輸出 : 6
  1. datetime.hour

返回給定datetime對象的小時數(shù)(一天的某時)

d = datetime(2019,12,6,13,30,50)
d.hour
# 輸出 : 13
  1. datetime.minute

返回給定datetime對象的分鐘數(shù)(一小時的某分)

d = datetime(2019,12,6,13,30,50)
d.minute
# 輸出 : 30
  1. datetime.second

返回給定datetime對象的秒數(shù)(一分鐘的某秒)

d = datetime(2019,12,6,13,30,50)
d.second
# 輸出 : 50
  1. datetime.microsecond

返回給定datetime對象的毫秒數(shù)(一分鐘的某秒)

d = datetime(2019,12,6,13,30,50,3000)
d.microsecond
# 輸出 : 3000
  1. datetime.tzinfo

返回datetime對象的時區(qū),前提是在創(chuàng)建datetime對象時需傳入tzinfo參數(shù),如果沒有傳入則返回值為None。

# 獲取一個含有時區(qū)的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>

詳情可見:http://www.itdecent.cn/p/7beff16c379d

六、結論

本文介紹了datetime模塊中datetime類的各種方法和屬性,代碼案例豐富,分門別類,方便使用時查找。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容