You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取图片DateTimeOriginal元数据并转为MM/DD/YYYY HH:MM格式失败求助

提取图片DateTimeOriginal元数据并格式化失败求助

我尝试提取图片的DateTimeOriginal元数据,将其转为MM/DD/YYYY HH:MM格式,但多次尝试都没成功。以下是我用ExifTool提取拍摄日期的代码:

try:
    exiftool_process = subprocess.Popen(
        ['exiftool', '-DateTimeOriginal', '-s3', '-n', file_path],
        stdout=subprocess.PIPE,
        stderr=subprocess.DEVNULL,
        universal_newlines=True
    )
    date_taken = exiftool_process.communicate()[0].strip()
    if date_taken:
        metadata_values["Date Taken"] = date_taken
except (subprocess.CalledProcessError, FileNotFoundError):
    pass

我写了三种格式化日期的方法,但都无法正常工作。不过像PIE这类第三方应用却能成功获取并转为MM/DD/YYYY HH:MM格式,求解决办法!

方法1

def format_date_taken(date_taken):
    try:
        datetime_obj = datetime.datetime.strptime(date_taken, "%Y:%m:%d %H:%M:%S")
        return datetime_obj.strftime("%m/%d/%Y %H:%M")
    except ValueError:
        try:
            datetime_obj = datetime.datetime.strptime(date_taken, "%Y:%m:%d %H:%M:%S%z")
            return datetime_obj.strftime("%m/%d/%Y %H:%M")
        except ValueError:
            return date_taken.split(" ")[0]

方法2

def format_date_taken(date_taken):
    try:
        if "-" in date_taken:
            # 处理带时区偏移的日期格式(例如:2023:05:14 15:53:13-04:00)
            date_str, time_offset = date_taken.split("-")
            datetime_obj = datetime.datetime.strptime(date_str, "%Y:%m:%d %H:%M:%S")
            formatted_date = datetime_obj.strftime("%m/%d/%Y")
            return f"{formatted_date} {time_offset[:6]}"
        else:
            # 处理无时区偏移的日期格式(例如:2020:12:31 19:31:49)
            datetime_obj = datetime.datetime.strptime(date_taken, "%Y:%m:%d %H:%M:%S")
            return datetime_obj.strftime("%m/%d/%Y %H:%M")
    except ValueError:
        return date_taken.split(" ")[0]

方法3

def format_date_taken(date_taken):
    if "-" in date_taken:
        # 处理带时区偏移的日期格式(例如:2023:05:14 15:53:13-04:00)
        date_str = date_taken.split("-")[0]
    else:
        # 处理无时区偏移的日期格式(例如:2020:12:31 19:31:49)
        date_str = date_taken
    
    date_parts = date_str.split(":")
    
    # 根据位置提取年、月、日、时、分
    year = date_parts[0]
    month = date_parts[1]
    day = date_parts[2]
    hour = date_parts[3].split()[0].split()[0]
    minute = date_parts[3].split()[1]
    
    # 返回格式化后的字符串
    return f"{month}/{day}/{year} {hour}:{minute}"

内容的提问来源于stack exchange,提问作者VeeyesPlus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:33:13