日期大全转换

超全日期的转换

    def convert_month_to_number(self, month_name):
        month_names = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月",
                       "十二月"]
        month_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

        eng_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

        if str(month_name) in month_names:
            for i, month in enumerate(month_names):
                if month_name.upper() == month.upper():
                    return month_numbers[i]
        elif str(month_name) in eng_names:
            for i, month in enumerate(eng_names):
                if month_name.upper() == month.upper():
                    return month_numbers[i]
        else:
            return None
 def get_date_month(self, date_str, strftime_str):
        print(date_str)
        eng_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        if len(date_str) == 0:
            return date_str
        # try:
        if len(date_str) < 7:
            delta = pd.Timedelta(str(date_str) + 'days')
            time_str = pd.to_datetime('1899-12-30') + delta
            strTime = time.strftime(
                "%Y-%m-%d",
                time.strptime(
                    str(time_str),
                    "%Y-%m-%d %H:%M:%S"))
            return strTime

        if "T" in date_str and "," not in date_str:
            return str(datetime.datetime.strptime(
                date_str[0:19], "%Y-%m-%dT%H:%M:%S").strftime(strftime_str))

        # ebay的
        if '-' in date_str:
            parts = date_str.split("-")
            month = parts[0]
            day = parts[1]
            year = parts[2]
            if len(str(year)) < 4 and '月' in month:

                try:
                    re_month = self.convert_month_to_number(month)
                    get_month = '{}-{}-{}'.format(re_month, day, year)
                    date_time = datetime.datetime.strptime(get_month, '%m-%d-%y').strftime(strftime_str)
                except:
                    print('-------')
                    print(date_str)
                    date_time = datetime.datetime.strptime(date_str, '%m月-%d-%y').strftime(strftime_str)

            elif len(str(year)) < 4 and month in eng_names:
                get_month = '{}-{}-{}'.format(month, day, year)
                date_time = datetime.datetime.strptime(get_month, '%b-%d-%y').strftime(strftime_str)
            elif '月' in date_str:
                date_time = datetime.datetime.strptime(
                    date_str, "%Y月-%m月-%d月").strftime(strftime_str)
            else:

                date_time = datetime.datetime.strptime(
                    date_str, "%Y-%m-%d").strftime(strftime_str)

            return date_time

        if "-" in date_str and "T" not in date_str:
            try:
                date_time = datetime.datetime.strptime(
                    date_str, '%Y-%m-%d').strftime(strftime_str)
            except BaseException:
                try:
                    date_time = datetime.datetime.strptime(
                        date_str, "%Y-%m-%d %H:%M:%S").strftime(strftime_str)
                except BaseException:
                    date_time = datetime.datetime.strptime(
                        date_str, '%Y-%m-%d %H:%M:%S %z').strftime(strftime_str)
            return date_time

        if "/" in date_str:
            if len(date_str.split('/')[-1]) < 4:
                try:
                    date_time = datetime.datetime.strptime(
                        date_str, '%m/%d/%y').strftime(strftime_str)
                except BaseException:
                    date_time = datetime.datetime.strptime(
                        date_str, '%Y/%m/%d').strftime(strftime_str)
            else:
                try:
                    date_time = datetime.datetime.strptime(
                        date_str, '%m/%d/%Y').strftime(strftime_str)
                except BaseException:
                    date_time = datetime.datetime.strptime(
                        date_str, '%d/%m/%Y').strftime(strftime_str)

            return date_time

        if "," in date_str:
            # 创建一个正则表达式模式,用于匹配四个字母的月份缩写
            pattern = r'([A-Za-z]{4})'
            # 查找匹配的文本
            matches = re.findall(pattern, date_str)
            for match in matches:
                if match in self.month_mapping:
                    date_str = date_str.replace(match, self.month_mapping[match])
            date_str = re.sub(
                r'(\d+:\d+:\d+)\s*(a\.m\.|p\.m\.)',
                r'\1 \2',
                date_str)

            date_str = date_str.replace('p.m.', 'PM').replace('a.m.', 'AM')
            try:

                return str(
                    datetime.datetime.strptime(
                        date_str,
                        "%b %d, %Y %H:%M:%S %p PDT").strftime(strftime_str))
            except Exception as e:
                return str(
                    datetime.datetime.strptime(
                        date_str,
                        "%b %d, %Y %H:%M:%S %p PST").strftime(strftime_str))

        if len(date_str) == 19:
            return str(
                datetime.datetime.strptime(
                    date_str,
                    "%Y-%m-%d %H:%M:%S").strftime(strftime_str))
        if len(date_str) >= 19:
            return str(datetime.datetime.strptime(
                date_str[0:19], "%Y-%m-%d %H:%M:%S").strftime(strftime_str))
        # except BaseException:
        #     print('报错了', date_str)
        #     return date_str
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值