- 原文地址:How to Format Dates in Python
- 原文做者:Nicholas Samuel
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:Raoul1996
- 校對者:rocheers
Python 附帶了各類有用的對象,能夠直接使用。例如日期對象就是一個例子。因爲日期和時間的複雜性,日期類型很難從頭開始操做。所幸,Python 日期對象將日期轉換成所需的字符串格式變得至關容易。前端
日期格式化是做爲程序員的你最重要的任務之一。不一樣地區表示日期/時間的方法各不相同,所以你做爲程序員的一大目標是以用戶可讀的方式顯示日期值。python
例如,你可能須要用數字格式表示日期值,如 「02-23-2018」。另外一方面,你可能須要以更長的文本格式(如 「Feb 23,2018「)表示相同的日期。在另外一種狀況下,你可能但願從數字格式的日期值中提取出字符串格式的月份。android
在本文中,咱們將研究不一樣類型的日期對象及其功能。ios
正如你猜到的, Python 的 datetime
模塊包含可用於處理日期和時間值的方法。要使用這個模塊,咱們得先經過如下 import
語句將其導入:git
import datetime
複製代碼
咱們能夠使用 time
類表示時間值。時間類的屬性包括小時、分鐘、秒和微秒。程序員
time
類的參數是可選的。儘管不指定任何參數,你將得到 0 的時間(對象),但這大多數時候不太多是你須要的。github
例如,要初始化值爲 1 小時、10 分種、20 秒、13 微秒的時間對象,咱們能夠運行如下命令:後端
t = datetime.time(1, 10, 20, 13)
複製代碼
讓咱們使用 print 功能來查看時間:bash
print(t)
複製代碼
輸出:函數
01:10:20.000013
複製代碼
你可能只須要查看小時、分鐘、秒或者微秒,您能夠像下邊這麼作:
print('hour:', t.hour)
複製代碼
輸出:
hour: 1
複製代碼
能夠按照以下方式檢索上述時間(對象)的分鐘、秒或者微秒:
print('Minutes:', t.minute)
print('Seconds:', t.second)
print('Microsecond:', t.microsecond)
複製代碼
輸出:
Minutes: 10
Seconds: 20
Microseconds: 13
複製代碼
日曆日期指能夠經過 date
類表示。示例具備的屬性有年、月和日。
讓咱們來調用 today
方法來查看今天的日期:
import datetime
today = datetime.date.today()
print(today)
複製代碼
輸出:
2018-09-15
複製代碼
代碼將返回今天的日期,所以你看到的輸出取決於你運行腳本的日期。
如今咱們調用 ctime
方法以另外一種格式打印日期:
print('ctime:', today.ctime())
複製代碼
輸出:
ctime: Sat Sep 15 00:00:00 2018
複製代碼
ctime
方法會使用比咱們以前看到的示例更長的日期時間格式。此方法主要用於將 Unix 時間(從 1970 年 1 月 1 日以來的秒數)轉換爲字符串格式。
如下是咱們如何使用 date
類顯示年份,月份和日期:
print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)
複製代碼
輸出
Year: 2018
Month: 9
Day : 15
複製代碼
既然你已經知道如何建立時間和日期對象,那麼讓咱們學習如何將它們格式化爲更易讀的字符串。
爲此,咱們將使用 strftime
方法。這個方法能夠幫助咱們將日期對象轉換爲可讀字符串。它須要兩個參數,語法以下所示:
time.strftime(format, t)
複製代碼
第一個參數是格式字符串(以何種格式顯示時間日期,感謝 rocheers 提醒),第二個參數是格式化的時間,可選值。
這個方法也能夠在 datetime
對象上直接調用。如如下示例所示:
import datetime
x = datetime.datetime(2018, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))
複製代碼
輸出:
Sep 15 2018 00:00:00
複製代碼
咱們使用如下字符串來格式化日期:
%b
: 返回月份名稱的前三個字符。在咱們的例子中,它返回 」Sep「%d
: 返回本月的日期,從 1 到 31。在咱們的例子中, 它返回 "15"。%Y
: 返回四位數格式的年份。在咱們的例子中, 它返回 "2018"。%H
: 返回小時。在咱們的例子中, 它返回 "00"。%M
: 返回分鐘,從 00 到 59。在咱們的例子中, 它返回 "00"。%S
: 返回秒,從 00 到 59。在咱們的例子中, 它返回 "00"。咱們沒有時間(對象),所以時間值都是 」00「。下面的例子顯示瞭如何格式化時間:
import datetime
x = datetime.datetime(2018, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))
複製代碼
輸出:
Sep 15 2018 12:45:35
複製代碼
除了上面給出的字符串外,strftime
方法還使用了其餘幾個指令來格式化日期值:
%a
: 返回工做日的前三個字符,例如 Wed。%A
: 返回返回工做日的全名,例如 Wednesday。%B
: 返回月份的全名,例如 September。%w
: 返回工做日做爲數字,從 0 到 6,週日爲 0。%m
: 將月份做爲數字返回,從 01 到 12。%p
: 返回 AM/PM 標識。%y
: 返回兩位數格式的年份,例如,」18「 而不是 」2018「。%f
: 返回從 000000 到 999999 的微秒。%Z
: 返回時區。%z
: 返回 UTC 偏移量。%j
: 返回當年的日期編號,從 001 到 366。%W
: 返回年份的週數,從 00 到 53。星期一被記爲一週第一天。%U
: 返回年份的週數,從 00 到 53。星期日被記爲一週第一天。%c
: 返回本地日期和時間版本。%x
: 返回本地日期版本。%X
: 返回本地時間版本。譯者備註:原文中的是 weekday,在查了一些資料後翻譯成 「工做日」,可是考慮如下示例:
from datetime import datetime
x = datetime.now()
x.strftime("%A")
複製代碼
輸出:
'Sunday'
複製代碼
請考慮如下示例:
import datetime
x = datetime.datetime(2018, 9, 15)
print(x.strftime('%b/%d/%Y'))
複製代碼
輸出:
Sep/15/2018
複製代碼
如下是你只獲取月份的方法:
print(x.strftime('%B'))
複製代碼
輸出:
September
複製代碼
讓咱們只展現年份:
print(x.strftime('%Y'))
複製代碼
輸出:
2018
複製代碼
在這個例子中,咱們使用了格式化代碼 %Y
。請注意,它的 Y 是大寫的,如今使用小寫寫:
print(x.strftime('%y'))
複製代碼
輸出:
18
複製代碼
此次省略了年份中前兩位數字。如你所見,使用這些格式化代碼,你能夠用你想要的任何方式表示日期時間。
strftime
方法幫助咱們將日期對象轉換爲可讀的字符串,strptime
偏偏相反。它做用於字符串,並將它們轉換成 Python 能夠理解的日期對象。
這是這個方法的語法:
datetime.strptime(string, format)
複製代碼
string
參數是咱們轉換成日期格式的字符串值。format
參數是指定轉換後日期採用的格式的指令。
例如,若是咱們須要將字符串 「9/15/18」 轉換成 datetime
對象。
咱們先導入 datetime
模塊,咱們將使用 from
關鍵字以便可以在沒有點格式的狀況下引用模塊中特定的函數:
from datetime import datetime
複製代碼
而後咱們能夠用字符串形式定義日期:
str = '9/15/18'
複製代碼
在將字符串轉換爲實際的 datetime
對象以前, Python 沒法將上述字符串理解爲日期時間。咱們能夠經過調用 strptime
方法成功完成:
執行如下命令轉換字符串:
date_object = datetime.strptime(str, '%m/%d/%y')
複製代碼
如今讓咱們調用 print
函數用 datetime
格式顯示字符串:
print(date_object)
複製代碼
輸出:
2018-09-15 00:00:00
複製代碼
如你所見,轉換成功!
你能夠看到正斜槓 「/」 用於分隔字符串的各個元素。這告訴 strptime
方法咱們的日期是什麼格式,咱們的例子中是用 "/" 做爲分隔符。
可是,若是月/日/年被 「-」 分隔怎麼辦?你應該這麼處理:
from datetime import datetime
str = '9-15-18'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)
複製代碼
輸出:
2018-09-15 00:00:00
複製代碼
再一次,多虧了格式說明符,strptime
方法可以解析咱們的日期並將其轉換爲日期對象。
在本文中,咱們研究瞭如何在 Python 中格式化日期。咱們看到 Python 中的 datetime
模塊如何操做日期和時間值。該模塊包含了許多操做日期時間的類,好比,time
類用於表示時間值,而 date
類用來表示日曆日期值。
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。