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

Linux下实现dat2iso命令:将DD.MM.YYYY日期转换为ISO 8601格式

Linux 下 dat2iso 命令完整实现方案

实现思路

直接编写独立的 bash 脚本即可,无需依赖额外工具,自带所有格式、合法性校验逻辑,完全匹配要求的错误提示规则。


完整脚本代码

#!/bin/bash

# 检查输入参数数量
if [ $# -ne 1 ]; then
    echo "Error!" >&2
    exit 1
fi

input_date="$1"

# 校验格式是否符合DD.MM.YYYY(自动过滤分隔符错误、位数错误场景)
if [[ ! "$input_date" =~ ^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$ ]]; then
    echo "Error!" >&2
    exit 1
fi

# 拆分日期字段
day=${input_date%%.*}
remain=${input_date#*.}
month=${remain%.*}
year=${remain#*.}

# 校验月份范围1-12
if [ "$month" -lt 1 ] || [ "$month" -gt 12 ]; then
    echo "Error!" >&2
    exit 1
fi

# 校验日期范围(自动适配不同月份天数、闰年2月特殊情况)
max_day=$(cal "$month" "$year" | awk 'NF {d=$NF} END {print d}')
if [ "$day" -lt 1 ] || [ "$day" -gt "$max_day" ]; then
    echo "Error!" >&2
    exit 1
fi

# 输出ISO 8601格式日期
echo "${year}${month}${day}"

部署方法

  1. 将上述代码保存为 /usr/local/bin/dat2iso 文件
  2. 给文件添加执行权限:chmod +x /usr/local/bin/dat2iso
  3. 部署完成后全局都可以直接调用 dat2iso 命令

效果验证

所有测试场景均可正确匹配:

  • 正常转换:dat2iso 30.09.2021 输出 20210930
  • 正常转换:dat2iso 01.01.2022 输出 20220101
  • 分隔符错误:dat2iso 03/10/2021 输出 Error!
  • 年份位数错误:dat2iso 03.10.21 输出 Error!
  • 日期非法:dat2iso 32.09.2021 输出 Error!
  • 月份非法:dat2iso 30.13.2021 输出 Error!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:01