首页 > 解决方案 > 无法在 bash 中使用 ddmmyyyy 格式增加日期

问题描述

为什么会这样:

date +%d%m%Y -d "01052018 + 1 day"

错误/

date: invalid date `02062018 + 1 day'

在 CEST 的 CentOS 7.3 上?我尝试了一些变化

date +%d%m%Y -d "$date 12:00 + 1 day"
date +%d%m%Y -ud "$date UTC + 1 day"

无济于事。我错过了什么?

标签: bashdate

解决方案


GNU date 不支持ddmmyyyy类型的日期格式,正如您从日期字符串中的纯数字中看到的那样,您需要将其更改为yyyymmdd类型以使其工作

date -d "20180501 + 1 day"

或使用 UTC 作为

date -ud "20180501 UTC + 1 day"

如果您的原始字符串来自变量,并且您需要解决方法以使其与上述格式兼容,请使用参数扩展来完成

rawdate="02062018"
compatDate="${rawdate:4}${rawdate:2:2}${rawdate:0:2}"

compatDate并在date命令中使用变量

date -d "${compatDate} + 1 day"

推荐阅读