python对不规则日期进行处理

对不规则日期进行处理

import time
import re

def get_time(time_str):
    '''
    不规则日期处理函数\n
    例如:'6-1','   6  -  1  ','6--1','6-- --1'\n
    对这些不规则日期处理,如果月或者日大于当前的月或日,就判断为去年的日期
    '''
    # 使用localtime方法转换成localtime
    time_local=time.localtime(int(time.time()))
    # 采用filter方法去除list中的空值,使用sllit对字符串分割
    hm=list(filter(None,re.split(':',time_str)))
    tiemData=''
    try:
        if len(hm)>1:
            dt_hm=time.strftime("%Y/%m/%d",time_local)
            for i in hm:
                dt_hm +=str(int(i))
            # 使用strptime方法转换成时间数组
            tiemData = time.strptime(dt_hm, "%Y/%m/%d%H%M")

        md=list(filter(None,re.split('-',time_str)))

        if len(md)>1:
            md_list=[]
            for i in md:
                md_list.append(str(int(i)))

            # 判断月或日是否大于现在的月或日,大于则为去年日期
            if int(md[0])>=time_local.tm_mon and int(md[1])>time_local.tm_mday:
                y=str(time_local.tm_year-1)
            else:
                y=str(time_local.tm_year)

            dt_ymd=y+"/"+"/".join(md_list)
            # 使用strptime方法转换成时间数组
            tiemData = time.strptime(dt_ymd, "%Y/%m/%d")
        # 使用strftime方法转换时间格式
        return time.strftime("%Y/%m/%d %H:%M",tiemData)

    except ValueError:
        return "参数无效"
    except BaseException:
        return "出现未知错误"

如果你有更好的方法可以留言,我们相互学习

发表评论

发表评论