以下是将各种日期格式转换为datetime格式的函数:

from datetime import datetime

def convert_to_datetime(date_str):
    date_format = None
    
    # 判断日期格式并设置对应的日期格式字符串
    if "\/" in date_str:
        if len(date_str.split("\"")) == 3:
            date_format = "%Y\/%m\/%d"
        elif len(date_str.split("\"")) == 2:
            date_format = "%Y\/%m"
    elif "年" in date_str and "月" in date_str and "日" in date_str:
        date_format = "%Y年%m月%d日"
    elif "-" in date_str:
        if len(date_str.split("-")) == 3:
            date_format = "%Y-%m-%d"
        elif len(date_str.split("-")) == 2:
            date_format = "%Y-%m"
    elif date_str.isdigit():
        date_format = "excel_date"
    
    if date_format is None:
        return None
    
    try:
        # 将日期字符串转换为datetime对象
        if date_format == "excel_date":
            excel_date = int(date_str)
            dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + excel_date - 2)
        else:
            dt = datetime.strptime(date_str, date_format)
        return dt
    except ValueError:
        return None

# 示例用法
date_str1 = "2023/4/4"
date_str2 = "2022年12月日"
date_str3 = "2023-4-4"
date_str4 = "excel日期格式"

dt1 = convert_to_datetime(date_str1)
dt2 = convert_to_datetime(date_str2)
dt3 = convert_to_datetime(date_str3)
dt4 = convert_to_datetime(date_str4)

print(dt1)  # 输出:2023-04-04 00:00:00
print(dt2)  # 输出:2022-12-01 00:00:00
print(dt3)  # 输出:2023-04-04 00:00:00
print(dt4)  # 输出:None

这个函数会根据输入的日期字符串判断其格式,并使用对应的日期格式字符串将其转换为datetime对象。如果无法确定日期格式或转换失败,则返回None。

Python 将 Excel 日期格式转换为 datetime 对象 - 不依赖第三方库

原文地址: https://www.cveoy.top/t/topic/pS7J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录