Python格式化時間

Alex_Hu發表於2019-02-16

datetime簡介

datetime和time的區別

time
在 Python 文件裡,time是歸類在Generic Operating System Services中,換句話說, 它提供的功能是更加接近於作業系統層面的。通讀文件可知,time 模組是圍繞著 Unix Timestamp 進行的。
該模組主要包括一個類 struct_time,另外其他幾個函式及相關常量。

datetime
datetime 比 time 高階了不少,可以理解為 datetime 基於 time 進行了封裝,提供了更多實用的函式。在datetime 模組中包含了幾個類,具體關係如下:

  • timedelta # 主要用於計算時間跨度
  • tzinfo # 時區相關
  • time # 只關注時間
  • date # 只關注日期
  • datetime # 同時有時間和日期

格式化時間

格式化時間主要用到的是datetime.datetime.strftime()方法和datetime.datetime.strptime()方法,這兩個方法的一字之差`f`和`p`指的是什麼呢?

個人理解:strftime中的`f`指的是format,即格式化時間;strptime中的`p`指的是parse,即將一個字串string按照指定的格式解析為時間


strptime的用法

官方解釋是

strptime(...)
    string, format -> new datetime parsed from a string (like time.strptime()).

簡單來說,strptime的作用就是將一個字串解析為時間,並返回為datetime物件。

如我們有字串 `2018-05-18 11:09:34`, 如何將它轉換為datetime物件呢?

In [1]: import datetime as dt

In [2]: strTime = `2018-05-18 11:09:34`

In [3]: type(strTime)
Out[3]: str

In [4]: time = dt.datetime.strptime(strTime, `%Y-%m-%d %H:%M:%S`)

In [5]: time
Out[5]: datetime.datetime(2018, 5, 18, 11, 9, 34)

In [6]: type(time)
Out[6]: datetime.datetime

strftime的用法

strftime(...)
    format -> strftime() style string.

strptime的作用是格式化時間格式,使其按照我們想要的格式來顯示。如我們要得到 `11:09:34 2018-05-18` 的格式來輸出時間。

如下例,先將字串解析為datetime物件,然後在格式化時間輸出,將其輸出按照`11:09:34 2018-05-18`的格式輸出。

In [1]: strTime = `2018-05-18 11:09:34`

In [2]: time = dt.datetime.strptime(strTime, `%Y-%m-%d %H:%M:%S`)

In [3]: time
Out[3]: datetime.datetime(2018, 5, 18, 11, 9, 34)

In [4]: type(time)
Out[4]: datetime.datetime

In [5]: time.strftime(`%H:%M:%S %Y-%m-%d`)
Out[5]: `11:09:34 2018-05-18`

In [6]: aa = time.strftime(`%H:%M:%S %Y-%m-%d`)

In [7]: type(aa)
Out[7]: str

相關文章