亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 常用日期處理-- datetime 模塊的使用

 更新時(shí)間:2020年09月02日 09:45:50   作者:Yanbin  
這篇文章主要介紹了python 如何對(duì)日期進(jìn)行處理,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

僅以此篇記錄一下個(gè)人常用的 Python 處理日期的庫(kù)與函數(shù),主要涉及的類庫(kù)有 Python 自帶的 datetime, time 和 calendar,以及第三方的 dateutil。說(shuō)到日期處理基本上要覆蓋的概念有 date, time, datetime, timezone, calendar, 時(shí)間的比較與差值,解析與格式化顯示等。

在 datetime 模塊中類之間的繼承關(guān)系如下:

object
├── date
│ └── datetime
├── time
├── timedelta
└── tzinfo
└── timezone

我們著重體驗(yàn)一下前面粗體顯示的 datetime, date, time, timedelta 對(duì)象, timezone 也不是不重要,有時(shí)候也可能只需要處理本地時(shí)間。

datetime, date, time 實(shí)例的創(chuàng)建

可以使用它們各自的構(gòu)造函數(shù),提供必要的參數(shù)來(lái)創(chuàng)建相應(yīng)的實(shí)例,下面是它們的構(gòu)造函數(shù)

datetime:
 def __new__(cls, year, month=None, day=None, hour=0, minute=0, second=0,
  microsecond=0, tzinfo=None, *, fold=0)
date:
 def __new__(cls, year, month=None, day=None)
 
time:
 def __new__(cls, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

比如

from datetime import datetime, date, time, timedelta
 
today = date(2019, 4, 24) # 2019-04-24

獲得當(dāng)前日期或時(shí)間

date.today() #2019-04-24
datetime.now() # 2019-04-24 21:41:40.226300
 
datetime.today() # 2019-04-24 21:41:50.336293
datetime.today().date() #2019-04-24
datetime.today().time() #21:41:50.336303
 
datetime.now().date()
datetime.now().time()

從語(yǔ)義上應(yīng)該調(diào)用 date.today() datetime.now()datetime.today() 只是 datetime 繼承自 date 的函數(shù)。

time 沒(méi)有 today() now() 方法,所以只有通過(guò) datetime.now() 來(lái)得到相應(yīng)的 time, datetime 兼具 date 與 time 信息,所以總是可以經(jīng)由 datetime 來(lái)獲得相應(yīng)的 date 和 time。

解析字符串獲得實(shí)例

date.fromisoformat('2019-04-24')  # 2019-04-24
datetime.fromisoformat('2019-04-24T13:12:23') # 2019-04-24 13:12:23
datetime.strptime('04/24/2019', '%m/%d/%Y') # 2019-04-24 00:00:00
time.fromisoformat('12:12:24+06:00')  #12:12:24+06:00

datetime, date 和 time 都有 fromisoformat() 方法,就是要了解它們各自的 ISO 表示格式。能指定格式來(lái)解析字符串只有 datetime 有 strptime() 方法,因?yàn)橛辛?datetime 也就有了相應(yīng)的 date 與 time

date, datetime 與 time 相應(yīng)的 ISO 格式如下

  1. date ISO format: YYYY-MM-DD
  2. datetime ISO format: YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]
  3. time ISO format: HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

能自由解析字符串的就是 datetime.strptime(str, fmt),Python 借鑒了標(biāo)準(zhǔn) C 的日期格式定義字符串,見(jiàn) strftime() and strptime() Behavior. 后面的 strftime() 函數(shù)也要用到相同的格式定義法。

注:strftime() 和 strptime() 中的 f 和 p 分別對(duì)應(yīng)著 format 和 parse 的首字母。

基于 Timestamp 來(lái)創(chuàng)建實(shí)例

Python 本身沒(méi)有 Timestamp 這么一個(gè)類型,這里的 timestamp 是一個(gè)浮點(diǎn)數(shù)表示的

ts = datetime.today().timestamp() # 1556161777.38553
date.fromtimestamp(ts)  # 2019-04-24
datetime.fromtimestamp(ts)  # 2019-04-24 22:09:37.385530

time 沒(méi)有 fromtimestamp() 方法

格式化輸出

date, datetime 和 time 都有 isoformat() 和 strftime(fmt) 函數(shù),格式字符串請(qǐng)參考 strftime() and strptime() Behavior。

date.today().strftime('%a %b %d, %Y') # Wed Apr 24, 2019
datetime.today().isoformat()  # 2019-04-24T22:21:38.747318
datetime.today().time().strftime('%Y') # 1900
date.today().strftime('%S')  # 00

上面是幾個(gè)例子,注意在 Python 中像 time 沒(méi)有年月日信息時(shí)格式化時(shí)想要輸出年份會(huì)得到不期望的值,但不會(huì)象 Java 中那樣報(bào)錯(cuò)。比如下面的 Java 代碼

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate.now().format(formatter); //2019-04-24
LocalTime.now().format(formatter); //Exception java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra

由于 LocalTime.now() 沒(méi)有年月日信息,所以無(wú)法格式化為 yyyy-MM-dd。

時(shí)間, 日期的比較與 timedelta

  1. date, datetime, time 都定義有 __lt__, __le__, __ne__, __gt__, __ge__, __eq__ 函數(shù),所以兩個(gè)相同類型的實(shí)例之間是可以進(jìn)行比較時(shí)間上的先后的。
  2. 其中的 date, datetime 還定義了 __sub__ 和 __rsub__ 函數(shù),因此兩個(gè) date 或兩個(gè) datetime 實(shí)例進(jìn)行相減會(huì)得到一個(gè) timedelta 實(shí)例
  3. 另外, date, datetime 也定義了 __add__, __radd__ 函數(shù),date 或 datetime 可以加減一個(gè) timedelta 來(lái)得到一個(gè)新的實(shí)例

下面看幾個(gè)簡(jiǎn)單的示例

d1 = datetime.today()    # 2019-04-24 23:00:31.672769
delta = timedelta(days=2, weeks=1, seconds=-3) # 8 days, 23:59:57
d2 = d1 + delta     # 2019-05-03 23:00:28.672769
d3 = d1 - delta     # 2019-04-15 23:00:34.672769
 
d2 - d1      # 8 days, 23:59:57
d2 > d1      # True
d1 < d3      # False
 
datetime.today().date() + delta)  # 2019-05-02

注意,不同類型間不能相減,比如用 date 減去一個(gè) datetime 就不合法了。d1 + delta, d1 - delta 和 delta + d1 都沒(méi)問(wèn)題, 但是 delta - d1 就不行了。

timedelta 表示了兩個(gè)時(shí)間的差值,用它來(lái)推算另一個(gè)實(shí)例的時(shí)候不帶有日歷信息,如果想要在日歷上推演就得借助于 calendar。

不可忽略的 time 模塊

前面講到的是 datetime 模塊中的 time 類型,Python 還自帶了 time 模塊,由 import time 引入。它提供了一些很實(shí)用的功能

  1. time 包含了完整的如上的 datetime 信息,并不像 datetime 中的 time 不含年月日信息
  2. locatime(), strptime(), gmtime(), asctime(), mktime() 用以構(gòu)造 time 實(shí)例
  3. strftime() 可用來(lái)格式化輸出
  4. time.time() 得到當(dāng)前的 Unix 時(shí)間戳
  5. time.sleep(sec) 用來(lái)暫停當(dāng)前線程若干秒

關(guān)于 calendar 和 dateutil 的內(nèi)容有后續(xù)

以上就是python 日期處理的詳細(xì)內(nèi)容,更多關(guān)于python 日期處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python總結(jié)之閉包和裝飾器

    python總結(jié)之閉包和裝飾器

    這篇文章主要為大家介紹了python閉包和裝飾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • python+Tesseract OCR實(shí)現(xiàn)截屏識(shí)別文字

    python+Tesseract OCR實(shí)現(xiàn)截屏識(shí)別文字

    pytesseract Python常用pytesseract進(jìn)行圖片上的文字識(shí)別,本文主要介紹了python+Tesseract?OCR實(shí)現(xiàn)截屏識(shí)別文字,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • python之Character string(實(shí)例講解)

    python之Character string(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇python之Character string(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • python中常見(jiàn)的5種框架解讀

    python中常見(jiàn)的5種框架解讀

    這篇文章主要介紹了python中常見(jiàn)的5種框架,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python使用threading.Condition交替打印兩個(gè)字符

    python使用threading.Condition交替打印兩個(gè)字符

    這篇文章主要為大家詳細(xì)介紹了python使用threading.Condition交替打印兩個(gè)字符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • pycharm中出現(xiàn)no module named xlwt的原因及解決

    pycharm中出現(xiàn)no module named xlwt的原因及解決

    這篇文章主要介紹了pycharm中出現(xiàn)no module named xlwt的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-05-05
  • selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法

    selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法

    這篇文章主要為大家詳細(xì)介紹了selenium查找網(wǎng)頁(yè)時(shí)如何處理網(wǎng)站資源一直加載非??D或者失敗的情況,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-10-10
  • python3實(shí)現(xiàn)名片管理系統(tǒng)(控制臺(tái)版)

    python3實(shí)現(xiàn)名片管理系統(tǒng)(控制臺(tái)版)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)名片管理系統(tǒng)控制臺(tái)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 如何用Python一次性下載抖音上音樂(lè)

    如何用Python一次性下載抖音上音樂(lè)

    不知道什么時(shí)候開(kāi)始,中國(guó)出現(xiàn)了南抖音、北快手的互文格局。喜歡抖音主要是兩個(gè)初衷,學(xué)做菜聽(tīng)音樂(lè)。抖音捧紅了很多人,也讓很多本不怎么讓大家熟知的歌曲、BGM,經(jīng)過(guò)翻唱、混剪與視頻搭配,從而傳播大街小巷。有沒(méi)有想過(guò)將這些好聽(tīng)的剪輯批量下載下來(lái)呢?
    2021-05-05
  • python中內(nèi)置庫(kù)csv的使用及說(shuō)明

    python中內(nèi)置庫(kù)csv的使用及說(shuō)明

    這篇文章主要介紹了python中內(nèi)置庫(kù)csv的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論