内置模块time包含很多与时间相关函数。我们可通过它获得当前的时间和格式化时间输出。
time(),以浮点形式返回自Linux新世纪以来经过的秒数。在linux中,00:00:00 UTC, January 1, 1970是新**49**的开始。
strftime可以用来获得当前时间,可以将时间格式化为字符串等等,还挺方便的。但是需要注意的是获得的时间是服务器的时间,注意时区问题,比如gae撒谎那个的时间就是格林尼治时间的0时区,需要自己转换。
strftime()函数将时间格式化
我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。
strftime使时间格式化。python的strftime格式是C库支持的时间格式的真子集。
%a 星期几的简写 Weekday name, abbr.
%A 星期几的全称 Weekday name, full
%b 月分的简写 Month name, abbr.
%B 月份的全称 Month name, full
%c 标准的日期的时间串 Complete date and time representation
%d 十进制表示的每月的第几天 Day of the month
%H 24小时制的小时 Hour (24-hour clock)
%I 12小时制的小时 Hour (12-hour clock)
%j 十进制表示的每年的第几天 Day of the year
%m 十进制表示的月份 Month number
%M 十时制表示的分钟数 Minute number
%S 十进制的秒数 Second number
%U 第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday)
%w 十进制表示的星期几(值从0到6,星期天为0)weekday number
%W 每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday)
%x 标准的日期串 Complete date representation (e.g. 13/01/08)
%X 标准的时间串 Complete time representation (e.g. 17:02:10)
%y 不带世纪的十进制年份(值从0到99)Year number within century
%Y 带世纪部分的十制年份 Year number
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。Name of time zone
%% 百分号
1.# handling date/time data
2.# Python23 tested vegaseat 3/6/2005
3.
4.importtime
5.
6.print"List the functions within module time:"
7.forfunkindir(time):
8.printfunk
9.
10.printtime.time(),"seconds since 1/1/1970 00:00:00"
11.printtime.time()/(60*60*24),"days since 1/1/1970"
12.
13.# time.clock()gives wallclock seconds,accuracy better than 1 ms
14.# time.clock()isforwindows,time.time()ismore portable
15.print"Using time.clock() = ",time.clock(),"seconds since first call to clock()"
16.print"\nTiming a 1 million loop 'for loop' ..."
17.start=time.clock()
18.forxinrange(1000000):
19.y=x # do something
20.end=time.clock()
21.print"Time elapsed = ",end-start,"seconds"
22.
23.# create a tuple of local time data
24.timeHere=time.localtime()
25.print"\nA tuple of local date/time data using time.localtime():"
26.print"(year,month,day,hour,min,sec,weekday(Monday=0),yearday,dls-flag)"
27.printtimeHere
28.
29.# extract a more readable date/timefromthe tuple
30.# eg.Sat Mar 05 22:51:55 2005
31.print"\nUsing time.asctime(time.localtime()):",time.asctime(time.localtime())
32.# the same results
33.print"\nUsing time.ctime(time.time()):",time.ctime(time.time())
34.print"\nOr using time.ctime():",time.ctime()
35.
36.print"\nUsing strftime():"
37.print"Day and Date:",time.strftime("%a %m/%d/%y",time.localtime())
38.print"Day, Date :",time.strftime("%A, %B %d, %Y",time.localtime())
39.print"Time (12hr) :",time.strftime("%I:%M:%S %p",time.localtime())
40.print"Time (24hr) :",time.strftime("%H:%M:%S",time.localtime())
41.print"DayMonthYear:",time.strftime("%d%b%Y",time.localtime())
42.
43.print
44.
45.print"Start a line with this date-time stamp and it will sort:",\
46.time.strftime("%Y/%m/%d %H:%M:%S",time.localtime())
47.
48.print
49.
50.defgetDayOfWeek(dateString):
51.# day of week(Monday=0)of a given month/day/year
52.t1=time.strptime(dateString,"%m/%d/%Y")
53.# yearintime_struct t1 cannotgo below 1970(start of epoch)!
54.t2=time.mktime(t1)
55.return(time.localtime(t2)[6])
56.
57.Weekday=['Monday','Tuesday','Wednesday','Thursday',
58.'Friday','Saturday','Sunday']
59.
60.# sorry about the limitations,stay above 01/01/1970
61.# more exactly 01/01/1970 at 0 UT(midnight Greenwich,England)
62.print"11/12/1970 was a",Weekday[getDayOfWeek("11/12/1970")]
63.
64.print
65.
66.print"Calculate difference between two times (12 hour format) of a day:"
67.time1=raw_input("Enter first time (format 11:25:00AM or 03:15:30PM): ")
68.# pick some plausible date
69.timeString1="03/06/05 "+time1
70.# create a time tuplefromthis time string format eg.03/06/05 11:22:00AM
71.timeTuple1=time.strptime(timeString1,"%m/%d/%y %I:%M:%S%p")
72.
73.#printtimeTuple1 # test eg.(2005,3,6,11,22,0,5,91,-1)
74.
75.time2=raw_input("Enter second time (format 11:25:00AM or 03:15:30PM): ")
76.# use same date to stayinsame day
77.timeString2="03/06/05 "+time2
78.timeTuple2=time.strptime(timeString2,"%m/%d/%y %I:%M:%S%p")
79.
80.# mktime()gives seconds since epoch 1/1/1970 00:00:00
81.time_difference=time.mktime(timeTuple2)-time.mktime(timeTuple1)
82.#printtype(time_difference)# test<type'float'>
83.print"Time difference = %d seconds"%int(time_difference)
84.print"Time difference = %0.1f minutes"%(time_difference/60.0)
85.print"Time difference = %0.2f hours"%(time_difference/(60.0*60))
86.
87.print
88.
89.print"Wait one and a half seconds!"
90.time.sleep(1.5)
91.print"The end!"