python日期

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

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

starttime = datetime.datetime.now()

date = time.strptime(date,"%Y-%m-%d")
print type(date)
print date[0]

Python关于时间日期有两个库datetime和time,于是我们要在四种格式之间转换:

datetime.datetime对象 datetime.datetime.now()
time.struct_time对象  time.localtime()
字符串 "2010-12-04T10:30:53"
时间戳 1291433453

datetime与time之间的相互转换:

>>> import time, datetime
>>> t = time.time()
>>> d_from_t = datetime.datetime.fromtimestamp(t)
>>> d_from_t
datetime.datetime(2008, 10, 31, 12, 50, 29, 578000)
>>> tt = time.mktime(d_from_t.timetuple())
>>> tt
1225428629.0
>>> t
1225428629.5780001

日期格式串说明:

%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 当前时区的名称
%% %号本身

使用timedelta进行加减:

d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(days =10)

print str(d3)
print d3.ctime()

上例演示了计算当前时间向后10天的时间。
如果是小时 days 换成 hours

time , datetime , string 类型互相转换:

1. string -> time
time.strptime(publishDate,"%Y-%m-%d %H:%M:%S")

2. string -> datetime
datetime.datetime.strptime(publishDate,"%Y-%m-%d %H:%M:%S")

3. time -> string
time.strftime("%y-%m-%d",time.localtime())

date = '2007-01-01'
t = time.strptime(date,"%Y-%m-%d") #struct_time类型
d = datetime.datetime(date[0], date[1],date[2]) #datetime类型

将日期时间对象转成字符串:

date = time.strftime("%y-%m-%d",d)
d.strftime('%Y%m%d')