最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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中的一些高級(jí)編程技巧

    介紹Python中的一些高級(jí)編程技巧

    這篇文章主要介紹了介紹Python中的一些高級(jí)編程技巧,包括推導(dǎo)師和裝飾器等重要的進(jìn)階知識(shí)點(diǎn),皆為深入學(xué)習(xí)Python開(kāi)發(fā)的必備基本功,需要的朋友可以參考下
    2015-04-04
  • Python大批量搜索引擎圖像爬蟲(chóng)工具詳解

    Python大批量搜索引擎圖像爬蟲(chóng)工具詳解

    這篇文章主要介紹了Python大批量搜索引擎圖像爬蟲(chóng)工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解

    在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解

    下面小編就為大家分享一篇在Windows中設(shè)置Python環(huán)境變量的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python 獲取當(dāng)天凌晨零點(diǎn)的時(shí)間戳方法

    python 獲取當(dāng)天凌晨零點(diǎn)的時(shí)間戳方法

    今天小編就為大家分享一篇python 獲取當(dāng)天凌晨零點(diǎn)的時(shí)間戳方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python基本語(yǔ)法經(jīng)典教程

    Python基本語(yǔ)法經(jīng)典教程

    這篇文章主要介紹了Python基本語(yǔ)法,較為詳細(xì)的分析了Python基本語(yǔ)法所涉及的流程控制語(yǔ)句,表達(dá)式,函數(shù),對(duì)象,類型,數(shù)學(xué)運(yùn)算等概念與使用技巧,需要的朋友可以參考下
    2016-03-03
  • 使用Python為Excel文件添加預(yù)設(shè)和自定義文檔屬性

    使用Python為Excel文件添加預(yù)設(shè)和自定義文檔屬性

    向Excel文件添加文檔屬性是專業(yè)地組織和管理電子表格數(shù)據(jù)的關(guān)鍵步驟,這些屬性,如標(biāo)題、作者、主題和關(guān)鍵詞,增強(qiáng)了文件的元數(shù)據(jù),使得在大型數(shù)據(jù)庫(kù)或文件系統(tǒng)中跟蹤變得更加容易,本文將介紹如何使用Python高效地為Excel文件添加文檔屬性,需要的朋友可以參考下
    2024-05-05
  • 用Python實(shí)現(xiàn)屏幕截圖詳解

    用Python實(shí)現(xiàn)屏幕截圖詳解

    大家好,本篇文章主要講的是用Python實(shí)現(xiàn)屏幕截圖詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • python繪制發(fā)散型柱狀圖+誤差陰影時(shí)間序列圖+雙坐標(biāo)系時(shí)間序列圖+繪制金字塔圖

    python繪制發(fā)散型柱狀圖+誤差陰影時(shí)間序列圖+雙坐標(biāo)系時(shí)間序列圖+繪制金字塔圖

    這篇文章主要介紹了python繪制發(fā)散型柱狀圖+誤差陰影時(shí)間序列圖+雙坐標(biāo)系時(shí)間序列圖+繪制金字塔圖,詳細(xì)的內(nèi)容需要的小伙伴可以參考一下下面文章內(nèi)容
    2022-08-08
  • python多線程性能測(cè)試之快速mock數(shù)據(jù)

    python多線程性能測(cè)試之快速mock數(shù)據(jù)

    這篇文章主要為大家介紹了python多線程性能測(cè)試之快速mock數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Pycharm新建項(xiàng)目時(shí)報(bào)錯(cuò)解決辦法

    Pycharm新建項(xiàng)目時(shí)報(bào)錯(cuò)解決辦法

    pycharm可以很方便的管理Python的解釋器(如果安裝了多個(gè)的話),以及第三方模塊,包,下面這篇文章主要給大家介紹了關(guān)于Pycharm新建項(xiàng)目時(shí)報(bào)錯(cuò)解決的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

武穴市| 禄劝| 达州市| 广河县| 五大连池市| 双牌县| 池州市| 奉节县| 精河县| 郎溪县| 南宫市| 洪雅县| 密山市| 白水县| 屯留县| 固镇县| 辉县市| 哈密市| 丰台区| 侯马市| 宜昌市| 荔浦县| 仙桃市| 定兴县| 阜平县| 韶山市| 治县。| 营口市| 江源县| 通榆县| 沙河市| 凤山市| 遂宁市| 桑植县| 东丰县| 岢岚县| 淮阳县| 绥滨县| 永康市| 涞水县| 富阳市|