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

Linux Bash下如何将04/01/2024 16:30:00转换为Jan 04 2024 16:30:00

解决Bash中日期格式解析错误的问题

问题核心:输入日期04/01/2024 16:30:00实际表示2024年1月4日,但英国服务器的date命令默认按美式MM/DD/YYYY格式解析,误判为4月1日。

解决步骤

要让date正确识别日期,需先将输入转换为无歧义的ISO 8601格式(YYYY-MM-DD HH:MM:SS),再指定目标输出格式。

方法1:用sed转换格式后解析

# 定义输入日期
input_date="04/01/2024 16:30:00"

# 将DD/MM/YYYY转换为YYYY-MM-DD
iso_date=$(echo "$input_date" | sed -E 's/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/\3-\2-\1/')

# 按目标格式输出,指定伦敦时区
date --date="TZ='Europe/London' $iso_date" +'%b %d %Y %H:%M:%S'

执行后输出:Jan 04 2024 16:30:00

若需要包含时区信息,将输出格式改为'%b %d %H:%M:%S %Z %Y',即可得到:Jan 04 16:30:00 BST 2024

方法2:用awk拆分重组日期

input_date="04/01/2024 16:30:00"

# 拆分日期时间字段,重组为ISO格式后传给date
echo "$input_date" | awk -F'[/ :]' '{printf "%d-%02d-%02d %02d:%02d:%02d", $3, $2, $1, $4, $5, $6}' | date --date="TZ='Europe/London' -" +'%b %d %Y %H:%M:%S'

原理说明

GNU date命令在解析MM/DD/YYYY和DD/MM/YYYY格式时,若日、月数值均≤12,会默认采用美式解析规则。通过转换为ISO 8601格式,可消除歧义,确保date正确识别日期的年、月、日顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:46:31