bash 中的日期添加在 docker 中不起作用

Chr*_*rno 0 date

我在许多堆栈交换网站和各种其他教程网站上关注了如何进行日期数学的示例。我试过 linux(在容器上)我得到了完全相同的错误:

$ docker run -it bash date -d '2014-11-19T15:40:30+10d'
date: invalid date '2014-11-19T15:40:30+10d'
bash-5.0# date -d  '+10 days'
date: invalid date '+10 days'
bash-5.0# date -d  '+10 d'
date: invalid date '+10 d'
bash-5.0# date -d  '2014-11-19T15:40:30+10 d'
date: invalid date '2014-11-19T15:40:30+10 d'
bash-5.0# date -d  '2014-11-19T15:40:30+10 days'
date: invalid date '2014-11-19T15:40:30+10 days'
bash-5.0# date -d  '2014-11-19T15:40:30 +10 days'
date: invalid date '2014-11-19T15:40:30 +10 days'
bash-5.0# date -d  '2014-11-19T15:40:30 +10 d'
date: invalid date '2014-11-19T15:40:30 +10 d'
Run Code Online (Sandbox Code Playgroud)

bash 版本:

$ docker run -it bash bash --version
GNU bash, version 5.0.2(1)-release (x86_64-pc-linux-musl)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Run Code Online (Sandbox Code Playgroud)

我试过这个帖子 这篇文章这篇文章,甚至这个随机网站

他们不可能都是错的。

und*_*cat 12

$ docker run bash date --version
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.
...
Run Code Online (Sandbox Code Playgroud)

您使用的 BusyBox 版本date与大多数桌面 Linux 发行版中的 Coreutils 版本不完全兼容。引用 BusyBox 的手册页:

Recognized TIME formats:

hh:mm[:ss]
[YYYY.]MM.DD-hh:mm[:ss]
YYYY-MM-DD hh:mm[:ss]
[[[[[YY]YY]MM]DD]hh]mm[.ss]
'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead
Run Code Online (Sandbox Code Playgroud)

您可能的选择是:

  • 使用 BusyBox 专有-D键(例如busybox date -D +10days),它扩展了对类似于 Coreutils 的时间表达式的支持date -d。请注意,该选项不会被 Coreutils 识别date
  • 使用两种实现都支持的 BusyBox 语法。
  • 在 Docker 容器中安装Coreutils
  • 使用具有 Coreutils 的现有容器。