接上篇對time模組的基本介紹,在論壇上看到有人對相關問題的求助,諸如
python 如何將時間“Fri Aug 13 14:05:20 2010”轉換成20100813140520格式
自己利用localtime上手實踐了一下
>>>import time
>>> time.localtime()time.struct_time(tm_year=2011, tm_mon=3, tm_mday=8, tm_hour=17, tm_min=36, tm_sec=51, tm_wday=1, tm_yday=67, tm_isdst=0)
>>> a=time.strftime("%a %b %d %H:%M:%S %Y",time.localtime())
>>> a
'Tue Mar 08 17:39:48 2011'
>>> b=time.strptime(a,"%a %b %d %H:%M:%S %Y")
>>> b
time.struct_time(tm_year=2011, tm_mon=3, tm_mday=8, tm_hour=17, tm_min=39, tm_sec=48, tm_wday=1, tm_yday=67, tm_isdst=-1)
>>> b=time.strftime("%Y%m%d%H%M%S",b)
>>> b
'20110308173948'
下面是我在學習Django時遇到的處理文章url請求的一個例子:
def entry_detail(request, year, month, day, slug):
import datetime, time
# 請求如:./2010/3/8/python-time-pratice
date_stamp = time.strptime(year+month+day, "%Y%b%d")
# 利用time.strptime 從url中提取為struct_time
pub_date = datetime.date(*date_stamp[:3])
# 取struct_time 中的前三項,即年月日
# 以下和本例關係不大,可略過
entry = get_object_or_404(Entry, pub_date__year=pub_date.year,
pub_date__month=pub_date.month,
pub_date__day=pub_date.day,
slug=slug)
return render_to_response('weBlog/entry_detail.html',
{'entry':entry})
中文的時間日期格式化符號說明如下(英文可見文檔或我上篇部落格):
%y 兩位元的年份表示(00-99)
%Y 四位元的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身