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

在Bash中转换日期格式:ISO格式转dd/mm/yyyy hh:mm:ss

Bash日期格式转换方案

针对将2022-08-14T21:56:17+00:00转换为14/08/2022 9:56:17(dd/mm/yyyy 12小时制时分秒)的需求,以下是几种可行的Bash实现方法:

方法1:使用GNU date命令(Linux系统默认)

GNU date支持直接解析ISO格式的日期字符串,通过指定输出格式完成转换:

# 直接处理固定日期字符串
date -d '2022-08-14T21:56:17+00:00' +'%d/%m/%Y %I:%M:%S'

# 处理前置命令的输出(比如前置命令是echo示例日期)
前置命令 | date -f - +'%d/%m/%Y %I:%M:%S'
# 或者用命令替换
date -d "$(前置命令)" +'%d/%m/%Y %I:%M:%S'

参数说明:

  • -d:指定要解析的输入日期字符串
  • -f -:从标准输入读取日期字符串(适合管道场景)
  • %d/%m/%Y:输出日/月/年格式
  • %I:%M:%S:输出12小时制的时:分:秒

方法2:使用BSD date命令(macOS/BSD系统)

BSD date的语法与GNU date不同,需要明确指定输入格式:

# 直接处理固定日期字符串
date -j -f '%Y-%m-%dT%H:%M:%S%z' '2022-08-14T21:56:17+00:00' +'%d/%m/%Y %I:%M:%S'

# 处理前置命令输出
前置命令 | xargs date -j -f '%Y-%m-%dT%H:%M:%S%z' +'%d/%m/%Y %I:%M:%S'

参数说明:

  • -j:仅转换格式,不修改系统时间
  • -f '%Y-%m-%dT%H:%M:%S%z':指定输入字符串的格式
  • 输出格式参数与GNU date一致

方法3:用字符串工具(sed/awk)纯文本处理

如果系统date命令版本受限,可直接通过字符串拆分替换实现,无需依赖日期解析工具:

用sed实现(仅转换日期格式,保留24小时制)

echo '2022-08-14T21:56:17+00:00' | sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2}).*/\3\/\2\/\1 \4:\5:\6/'

用awk实现(自动转换为12小时制)

echo '2022-08-14T21:56:17+00:00' | awk -F'[-T:+]' '{
    hour = $4 % 12
    if (hour == 0) hour = 12
    printf "%02d/%02d/%04d %d:%02d:%02d\n", $3, $2, $1, hour, $5, $6
}'

原理:通过分隔符拆分字符串,提取年、月、日、时等字段,重新组合为目标格式,同时处理12小时制的转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:24:38