小编May*_*ayD的帖子

在 bash LINUX 中将日期从 DD-MM-YYYY 转换为 YYYY-MM-DD 格式

设想:

我正在将文件中的日期值提取到变量中,默认情况下它采用 DD-MM-YYYY 格式。我必须从系统日期中减去这个日期。如果我的两个日期都采用 DD-MM-YYYY 格式,则减法会给出不正确的结果。所以我在谷歌上读了一点,决定将两个日期都格式化为 YYYY-MM-DD,因为这将在减法后给出正确的值。我已经在 YYYY-MM-DD 中成功格式化了系统日期,但是很难将从文件中获得的日期转换为 YYYY-MM-DD 格式。

以下解决方案适用于个位数日期:

$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
Output : 1832-09-02
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将日期转换为两位数时,如下所示:

$ date -d $(sed "s/-/\//g" <<< '19-07-2021') +%Y-%m-%d
Run Code Online (Sandbox Code Playgroud)

我得到输出

Invalid date '19/07/2021'
Run Code Online (Sandbox Code Playgroud)

在哪里:

19 - is Date of a month
07 - is Month i.e. July in this case.
2021 - is Year
Run Code Online (Sandbox Code Playgroud)

所需的输出为 -> 2021-07-19

我正在使用日期版本为 RH Linux:date (GNU coreutils) 8.22

请帮助提供上述问题的解决方案。

shell-script text-processing date

5
推荐指数
4
解决办法
1348
查看次数

标签 统计

date ×1

shell-script ×1

text-processing ×1