字符串與時間的轉換
在程序開發中,經常把日期類型轉換爲字符類型使用。字符串與日期的轉換時工作中頻繁遇到的問題。Python提供了time模塊處理日期和時間。
1. 從時間到字符串的轉換
time模塊中的函數strftime()可以實現從時間字符串的轉換。strftime()的聲明如下所示:
strftime(format[, tuple]) -> string
- 參數format表示格式化日期的特殊字符。例如,"%Y-%m%d"。
- 參數tuple表示要轉換的時間,用元祖存儲。元組中的元素分別表示年、月、日、時、分、秒。
- 函數返回一個一個表示時間的字符串。
參數format格式化日期的常用標記如下表所示:
格式化日期的常用標記
符號 | 說明 |
---|---|
%a | 英文星期的簡寫 |
%A | 英文星期的完整拼寫 |
%b | 英文月份的簡寫 |
%B | 英文月份的完整拼寫 |
%c | 顯示本地的日期和時間 |
%d | 日期數,取值在1~31之間 |
%H | 小時數,取值在00~23之間 |
%I | 小時數,取值01~12之間 |
%m | 月份,取值01~12之間 |
%M | 分鐘數,取值在01~59之間 |
%j | 顯示從本年第1天開始到當天的天數 |
%w | 顯示今天是星期幾,0表示星期天 |
%W | 顯示當天屬於本年的第幾周,星期一作爲一週的第一天進行計算 |
%x | 本地的當天日期 |
%X | 本地的當天時間 |
%y | 年份,取值在0~99之間 |
%Y | 年份完整拼寫 |
2. 字符串到時間的轉換
字符串到水煎的轉換需要進行兩次轉換,需要使用time模塊和datetime類,轉換過程分爲如下3個步驟。
- 調用函數strptime()把字符串換磚爲一個元祖,進行第一次轉換。strptime()的聲明如下所示:
strptime(string, format) ->struct_time
(1) 參數string表示需要轉換的字符串。
(2) 參數format表示日期要轉換的輸出格式。
(3) 函數返回一個存放時間的元祖。
- 把表示時間的元祖賦值給表示年、月、日的3個變量。
- 把表示年、月、日的3個變量傳遞給datetime(),進行第二次轉換。datetime類的datetime()函數如下所示:
datetime(year, month, day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
(1) 參數year、month、day分別表示年、月、日,這3個參數必不可少。
(2)函數返回一個datetime類型的變量。
import time, datetime
#時間到字符串的轉換
print(time.strftime("%Y-%m-%d %X", time.locatime())
#字符串到時間的轉換
t = time.strptime("2008-08-08", "%Y-%m-%d")
y,m,d = [0:3]
print(datetime.datetime(y,m,d)
第4行代碼,函數localtime()返回當前時間(例如,2008-02-14 13:52:11),strftime把當前的時間格式化爲字符串類型。輸出結果:2008-02-14 13:52:11。
第6行代碼,把字符串 "2008-08-08" 轉換爲一個元組返回。
第7行代碼,把元組中前3個表示年、月、日的元素賦值給3個變量。
第8行代碼,調用datetime()返回時間類型。輸出結果:2008-08-08 00:00:00。
注意:格式化日期的特殊標記是區分大小寫的,%Y與%y並不相同的。