下面一段代码是根据给定的日期范围然后来生成一个日期列表,但存放的格式为可转为日期的浮点或整数型数值。
#hi.baidu.com/muinlive
#! /usr/bin/env python
#! -*- coding:utf-8 -*-
import time
def ExpandDateList(DateList):
Dlist=[]
tlist=[] #hi.baidu.com/muinlive
for s in DateList:
tlist=s.split(':')
i=len(tlist)
if (i==1):
s=str(tlist[0])
try:
d1=time.strptime(s,'%Y-%m-%d') #hi.baidu.com/muinlive
t1=time.mktime(d1)
Dlist.extend([t1])
except: #hi.baidu.com/muinlive
print s+" 为无效日期。"
continue
elif (i==2):
s1=str(tlist[0])
try:
d1=time.strptime(s1,"%Y-%m-%d")
t1=time.mktime(d1)
except:
print s1+" 为无效日期。"
continue
s2=str(tlist[1])
try: #hi.baidu.com/muinlive
d2=time.strptime(s2,"%Y-%m-%d")
t2=time.mktime(d2)
except:
print s2+" 为无效日期。"
continue
if (t1>t2):
t3=t1
t1=t2
t2=t3#hi.baidu.com/muinlive
tdaystep=86400# 一天的秒数24*60*60
Dlist.extend(range(int(t1),int(t2),tdaystep))
Dlist.extend([t2])
return Dlist
下面对用到的函数进行解释一下。
#hi.baidu.com/muinlive
d1=time.strptime(s,'%Y-%m-%d')#hi.baidu.com/muinlive
strptime( date_string, format )函数time模块中用来将日期字符串date_string按指定的格式format进行转换,format是要以date_string对应的。如果转换失败将触发一个异常。
format转义符对应意义如下
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%j 年内的一天(001-366) #hi.baidu.com/muinlive
%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 当前时区的名称
%% %号本身
#hi.baidu.com/muinlive
示例结果
>>> d1=time.strptime('2007/4/15','%Y/%m/%d')
>>> d1
(2007, 4, 15, 0, 0, 0, 6, 105, -1)
t1=time.mktime(d1)
mktime()是将time对象转为一个浮点数。然后可以用localtime()再将浮点数转为time对象。
#hi.baidu.com/muinlive
>>> t1=time.mktime(d1)
>>> d2=time.localtime(t1)
>>> t1
1176566400.0
>>> d2
(2007, 4, 15, 0, 0, 0, 6, 105, 0)
#! /usr/bin/env python
#! -*- coding:utf-8 -*-
import time
def ExpandDateList(DateList):
Dlist=[]
tlist=[] #hi.baidu.com/muinlive
for s in DateList:
tlist=s.split(':')
i=len(tlist)
if (i==1):
s=str(tlist[0])
try:
d1=time.strptime(s,'%Y-%m-%d') #hi.baidu.com/muinlive
t1=time.mktime(d1)
Dlist.extend([t1])
except: #hi.baidu.com/muinlive
print s+" 为无效日期。"
continue
elif (i==2):
s1=str(tlist[0])
try:
d1=time.strptime(s1,"%Y-%m-%d")
t1=time.mktime(d1)
except:
print s1+" 为无效日期。"
continue
s2=str(tlist[1])
try: #hi.baidu.com/muinlive
d2=time.strptime(s2,"%Y-%m-%d")
t2=time.mktime(d2)
except:
print s2+" 为无效日期。"
continue
if (t1>t2):
t3=t1
t1=t2
t2=t3#hi.baidu.com/muinlive
tdaystep=86400# 一天的秒数24*60*60
Dlist.extend(range(int(t1),int(t2),tdaystep))
Dlist.extend([t2])
return Dlist
下面对用到的函数进行解释一下。
#hi.baidu.com/muinlive
d1=time.strptime(s,'%Y-%m-%d')#hi.baidu.com/muinlive
strptime( date_string, format )函数time模块中用来将日期字符串date_string按指定的格式format进行转换,format是要以date_string对应的。如果转换失败将触发一个异常。
format转义符对应意义如下
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%j 年内的一天(001-366) #hi.baidu.com/muinlive
%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 当前时区的名称
%% %号本身
#hi.baidu.com/muinlive
示例结果
>>> d1=time.strptime('2007/4/15','%Y/%m/%d')
>>> d1
(2007, 4, 15, 0, 0, 0, 6, 105, -1)
t1=time.mktime(d1)
mktime()是将time对象转为一个浮点数。然后可以用localtime()再将浮点数转为time对象。
#hi.baidu.com/muinlive
>>> t1=time.mktime(d1)
>>> d2=time.localtime(t1)
>>> t1
1176566400.0
>>> d2
(2007, 4, 15, 0, 0, 0, 6, 105, 0)