python的日期处理

来源:互联网 发布:数据网关 英文 编辑:程序博客网 时间:2024/05/17 08:57
下面一段代码是根据给定的日期范围然后来生成一个日期列表,但存放的格式为可转为日期的浮点或整数型数值。#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)
原创粉丝点击