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

在Bash中如何将%y%m%d%H%M格式的日期转换为ISO标准格式

解决方法

date 命令默认无法直接识别 yyMMddHHmm 这种无分隔符的紧凑日期格式,所以需要先对输入字符串做格式处理,或者手动指定输入格式,不同系统的解决方案如下:

Linux 环境(GNU date)

可以通过字符串切片拆分版本号的各个时间部分,拼接为 date 可识别的格式后再做转换:

# 你的版本号变量
releaseVersion=2105231450
# 切片提取年、月、日、时、分后转换
formattedDate=$(date -d "20${releaseVersion:0:2}-${releaseVersion:2:2}-${releaseVersion:4:2} ${releaseVersion:6:2}:${releaseVersion:8:2}" +"%Y-%m-%d %H:%M")
# 输出结果为 2021-05-23 14:50
echo $formattedDate

MacOS 环境(BSD date)

BSD 版本的 date 支持直接指定输入格式,使用 -f 参数声明输入的日期格式即可:

releaseVersion=2105231450
formattedDate=$(date -j -f "%y%m%d%H%M" "$releaseVersion" +"%Y-%m-%d %H:%M")
echo $formattedDate

报错原因说明

你之前执行的命令存在两个问题:

  1. 没有为 date 指定输入的10位数字串的格式,date 无法识别该输入内容,所以抛出无效日期的错误
  2. 输出格式参数仍为 +%y%m%d%H%M,即便输入合法,输出结果也会是和输入一致的紧凑格式,无法得到你需要的ISO日期样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:54:05