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

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

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

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

在 datetime 模塊中類之間的繼承關系如下:

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

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

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

可以使用它們各自的構造函數,提供必要的參數來創(chuàng)建相應的實例,下面是它們的構造函數

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

獲得當前日期或時間

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()

從語義上應該調用 date.today() datetime.now(),datetime.today() 只是 datetime 繼承自 date 的函數。

time 沒有 today() now() 方法,所以只有通過 datetime.now() 來得到相應的 time, datetime 兼具 date 與 time 信息,所以總是可以經由 datetime 來獲得相應的 date 和 time。

解析字符串獲得實例

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 表示格式。能指定格式來解析字符串只有 datetime 有 strptime() 方法,因為有了 datetime 也就有了相應的 date 與 time

date, datetime 與 time 相應的 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 借鑒了標準 C 的日期格式定義字符串,見 strftime() and strptime() Behavior. 后面的 strftime() 函數也要用到相同的格式定義法。

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

基于 Timestamp 來創(chuàng)建實例

Python 本身沒有 Timestamp 這么一個類型,這里的 timestamp 是一個浮點數表示的

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

time 沒有 fromtimestamp() 方法

格式化輸出

date, datetime 和 time 都有 isoformat() 和 strftime(fmt) 函數,格式字符串請參考 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

上面是幾個例子,注意在 Python 中像 time 沒有年月日信息時格式化時想要輸出年份會得到不期望的值,但不會象 Java 中那樣報錯。比如下面的 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() 沒有年月日信息,所以無法格式化為 yyyy-MM-dd

時間, 日期的比較與 timedelta

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

下面看幾個簡單的示例

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 減去一個 datetime 就不合法了。d1 + delta, d1 - delta 和 delta + d1 都沒問題, 但是 delta - d1 就不行了。

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

不可忽略的 time 模塊

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

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

關于 calendar 和 dateutil 的內容有后續(xù)

以上就是python 日期處理的詳細內容,更多關于python 日期處理的資料請關注腳本之家其它相關文章!

相關文章

  • 介紹Python中的一些高級編程技巧

    介紹Python中的一些高級編程技巧

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

    Python大批量搜索引擎圖像爬蟲工具詳解

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

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

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

    python 獲取當天凌晨零點的時間戳方法

    今天小編就為大家分享一篇python 獲取當天凌晨零點的時間戳方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python基本語法經典教程

    Python基本語法經典教程

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

    使用Python為Excel文件添加預設和自定義文檔屬性

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

    用Python實現屏幕截圖詳解

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

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

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

    python多線程性能測試之快速mock數據

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

    Pycharm新建項目時報錯解決辦法

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

最新評論

阿克| 缙云县| 县级市| 射阳县| 贵州省| 化州市| 巴塘县| 平江县| 金华市| 福州市| 杭锦后旗| 子长县| 贡觉县| 堆龙德庆县| 赤峰市| 工布江达县| 南靖县| 莆田市| 高陵县| 绍兴市| 景泰县| 大足县| 晋城| 江华| 庆阳市| 长宁区| 乌鲁木齐市| 来宾市| 启东市| 云安县| 泽普县| 泰兴市| 忻城县| 葵青区| 遂昌县| 佛山市| 山阳县| 紫云| 大石桥市| 申扎县| 裕民县|