Python的时间：秒和字符串之间的转换
2011-09-02 13:31:16      个评论

1）秒数 ==》字符串

1234567 from time import *  def secs2str(secs):         return strftime("%Y-%m-%d %H:%M:%S",localtime(secs))   >>> secs2str(1227628280.0) '2008-11-25 23:51:20'

2)字符串 ==》 秒数

123456 from time import *#先将时间字符串解析为9元组，例如： #2008-11-25 23:51:20,解析为9元组：[2008,11,25,23,51,20,0,0,0]。 >>> tmlist = [2008,11,25,23,51,20,0,0,0] >>> mktime(tmlist) 1227628280.0

12345678910 def secs2str(secs):     """ 将秒转化为字符串 """    if int(secs) < 0:         return ""     return str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(secs))) def str2secs(tmlist=[]):     """ 将字符串的时间转化为秒 """    if len(tmlist) != 9:         return 0    return int(time.mktime(tmlist))

Python的time模块的部分翻译:

time模块提供各种操作时间的函数

year (four digits, e.g. 1998)
month (1-12)
day (1-31)
hours (0-23)
minutes (0-59)
seconds (0-59)
weekday (0-6, Monday is 0)
Julian day (day in the year, 1-366)
DST (Daylight Savings Time) flag (-1, 0 or 1) 是否是夏令时
If the DST flag is 0, the time is given in the regular time zone;
if it is 1, the time is given in the DST time zone;
if it is -1, mktime() should guess based on the date and time.

1.asctime()
asctime([tuple]) -> string

Convert a time tuple to a string, e.g. ‘Sat Jun 06 16:26:11 1998′.
When the time tuple is not present, current time as returned by localtime()
is used.

2.clock()
clock() -> floating point number

view plaincopy to clipboardprint?
import time
if __name__ == '__main__':
time.sleep(1)
print "clock1:%s" % time.clock()
time.sleep(1)
print "clock2:%s" % time.clock()
time.sleep(1)
print "clock3:%s" % time.clock()输出：
clock1:3.35238137808e-006
clock2:1.00004944763
clock3:2.00012040636

3.sleep(…)
sleep(seconds)

“The argument may be a floating point number for subsecond precision.”

4.ctime(…)
ctime(seconds) -> string

time.ctime()输出为：’Sat Mar 28 22:24:24 2009′

5.gmtime(…)
gmtime([seconds]) -> (tm_year, tm_mon, tm_day, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)

6.localtime(…)
localtime([seconds]) -> (tm_year,tm_mon,tm_day,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)

7.mktime(…)
mktime(tuple) -> floating point number

8.strftime(…)
strftime(format[, tuple]) -> string

python中时间日期格式化符号：
%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 当前时区的名称
%% %号本身

9.strptime(…)
strptime(string, format) -> struct_time

2009-03-20 11:45:39 对应的格式化字符串为：%Y-%m-%d %H:%M:%S
Sat Mar 28 22:24:24 2009 对应的格式化字符串为：%a %b %d %H:%M:%S %Y

10.time(…)
time() -> floating point number

1.夏令时

a = (2009, 6, 28, 23, 8, 34, 5, 87, 1)
b = (2009, 6, 28, 23, 8, 34, 5, 87, 0)
a和b分别表示的是夏令时和标准时间，它们之间转换为时间戳应该相关3600，但是转换后输出都为646585714.0

1.python获取当前时间
time.time() 获取当前时间戳
time.localtime() 当前时间的struct_time形式
time.ctime() 当前时间的字符串形式

2.python格式化字符串

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())格式化成Sat Mar 28 22:24:24 2009形式

time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())3.将格式字符串转换为时间戳

a = "Sat Mar 28 22:24:24 2009"
b = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))

python time datetime模块详解
Time模块：
－－－－－－－－－－－－－－－－－－－－－－－－－－
time() #以浮点形式返回自Linux新世纪以来经过的秒数。在linux中，00:00:00 UTC,

January 1, 1970是新**49**的开始。
>>> time.time()
1150269086.6630149
>>> time.ctime(1150269086.6630149)
>>> 'Wed Jun 14 15:11:26 2006'

time.ctime([sec])#把秒数转换成日期格式，如果不带参数，则显示当前的时间。

>>> import time
>>> time.ctime()
>>> 'Wed Jun 14 15:02:50 2006'
>>> time.ctime(1138068452427683)
'Sat Dec 14 04:51:44 1901'
>>> time.ctime(os.path.getmtime('E:\\untitleds.bmp'))
'Fri Sep 19 16:35:37 2008'

>>> time.gmtime(os.path.getmtime('E:\\untitleds.bmp'))
time.struct_time(tm_year=2008, tm_mon=9, tm_mday=19, tm_hour=8, tm_min=35,

tm_sec=37, tm_wday=4, tm_yday=263, tm_isdst=0)

>>> time.strftime('%Y-%m-%d %X',time.localtime(os.path.getmtime('E:\\untitleds.bmp')))
'2008-09-19 16:35:37'

#定时3秒。
>>> time.sleep(3)

TIME模块参考：
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
#取一个文件的修改时间
>>> os.path.getmtime('E:\\untitleds.bmp')
1221813337.7626641

timezone 通用协调时间和本地标准时间的差值，以秒为单位。
altzone 通用协调时间和本地夏令时的差值
daylight 标志，本地时间是否反映夏令时。
tzname (标准时区名，夏令时时区名)

time() 以浮点数返回纪元至今以来的秒数。
clock() 以浮点数返回CPU开始这个process的时间，(或者至上次调用这个函数的时间)
sleep() 延迟一段以浮点数表示的秒数。
gmtime() 把以秒表示的时间转换为通用协调时序列
localtime() 把秒时转换为本地时序列
asctime() 将时间序列转换成文本描述
ctime() 将秒时转换成文本描述
mktime() 将本地时序列转换成秒时
strftime() 以指定格式将序列时转为文本描述
strptime() 以指定格式从文本描述中解析出时间序列
tzset() 改变当地时区值

DateTime模块
－－－－－－－－－－－－－－－－－－－－－－－－－－－－
datetime 将日期转化为秒
-------------------------------------
>>> import datetime,time
>>> time.mktime(datetime.datetime(2009,1,1).timetuple())
1230739200.0

>>> cc=[2000,11,3,12,43,33] #Attributes: year, month, day, hour, minute,

second
>>> time.mktime(datetime.datetime(cc[0],cc[1],cc[2],cc[3],cc[4],cc[5]).timetuple())
973226613.0

>>> cc = time.localtime(os.path.getmtime('E:\\untitleds.bmp'))
>>> print cc[0:3]
(2008, 9, 19)

DateTime示例
－－－－－－－－－－－－－－－－－

>>> import datetime
>>> d1 = datetime.datetime(2005, 2, 16)
>>> d2 = datetime.datetime(2004, 12, 31)
>>> (d1 - d2).days
47

import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()

3)glob

3.1 glob.glob(regression) 返回一个列表
3.2 glob.iglob(regression) 返回一个遍历器

---------------------------------------------------------

>>> import datetime
>>> d1=datetime.datetime(2010,9,8)
>>> d2=datetime.datetime(2005,8,12)
>>>(d1-d2).days
1853

That means  我这个blog开博至今已经5年28天啦！

import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

import time
>>> s="2006-1-2"
>>> time.strptime(s,"%Y-%m-%d)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天（0-31）
%H 24小时制小时数（0-23）
%I 12小时制小时数（01-12）
%j 年内的一天（001-366）
%m 月份（01-12）
%M 分钟数（00=59）
%p 本地A.M.或P.M.的等价符
%S 秒（00-59）
%U 一年中的星期数（00-53）星期天为星期的开始
%w 星期（0-6），星期天为星期的开始
%W 一年中的星期数（00-53）星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示（00-99）
%Y 四位数的年份表示（000-9999）
%Z 当前时区的名称
%% %号本身

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝举例的分隔线＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

#-*- coding:utf-8 -*-

import time
import datetime

# time , datetime , string 类型互相转换
#
# string -> time
# time.strptime(publishDate,"%Y-%m-%d %H:%M:%S")
#
# time -> string
# time.strftime("%y-%m-%d",t)

date = '2007-01-01'

print type(date)

date = time.strptime(date,"%Y-%m-%d")

print type(date)

print date[0]

d4 = datetime.datetime(date[0], date[1],date[2])

print d4
print type(d4)

#将日期时间对象转成字符串则要用

date = time.strftime("%y-%m-%d",date)
print type(date)

#其中date为日期时间对象

＝＝＝＝＝＝＝＝＝＝＝＝＝＝我编辑的一个通用的时间计算小程序 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

# -*- coding:GBK -*-
# 计算两个时间的间隔天数
# 注意：输入月份和天时，不能输入08,09等，会被识别为 8 进制而出错！（8进制是不超过07的）
# 解决办法：要把月份和天前面的0去掉。

from datetime import datetime

(y1,m1,d1) = input("请输入时间1(格式为2009,8,9):")
(y2,m2,d2) = input("请输入时间2:")

date1 = datetime(y1,m1,d1)
date2 = datetime(y2,m2,d2)

days = (date2-date1).days

if (days<0):  # 如果时间相差为负数，取为正数
days = -days

if (days>365):
print '两个时间相隔',days/365,'年',days%365,'天'
else:
print '两个时间相隔',days,'天！'