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

为何GNU date无法解析带+HH:MM时区的EXIF提取日期?

问题原因及解决办法

问题根源

GNU date 命令的输入解析规则和输出格式化规则是相互独立的:

  • 虽然%:z选项能生成带冒号的时区格式(如+03:00),但它解析输入时,默认不识别这种带冒号的时区偏移格式;
  • 同时,你从MOV文件提取的日期用冒号分隔年、月、日(2024:05:31),这也不符合date默认支持的日期分隔方式——它只认横杠-或斜杠/分隔的格式(比如2024-05-31)。

这两个格式问题叠加,导致date无法识别你输入的时间字符串。

解决办法

先对提取到的日期字符串做格式转换,把日期部分的冒号换成横杠,时区部分的冒号去掉,再交给date解析:

# 假设creation_date是提取到的原始日期
creation_date="2024:05:31 20:57:23+03:00"

# 格式转换:YYYY:MM:DD → YYYY-MM-DD;+03:00 → +0300
processed_date=$(echo "$creation_date" | sed -E 's/([0-9]{4}):([0-9]{2}):([0-9]{2})/\1-\2-\3/; s/([+-][0-9]{2}):([0-9]{2})/\1\2/')

# 现在可以正常解析并格式化输出
date -d "$processed_date" "+%Y:%m:%d %H:%M:%S%:z"

执行后就能得到正确的解析结果,同时还能按你需要的格式输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:32:34