python的time和date处理:time和strftime函数

上一篇 / 下一篇  2011-06-15 10:34:15 / 个人分类:python

内置模块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!"


TAG:

 

评分:0

我来说两句

Open Toolbar