Date

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

  • February 13, 2019

我在許多堆棧交換網站和其他各種教程網站上都遵循了有關如何進行日期數學的範例。我已經嘗試過 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'

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.

我試過這篇文章 這篇文章這篇文章,甚至這個隨機網站

他們不可能都是錯的。

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

您使用的 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

您可能的選擇是:

  • 使用 BusyBox 專有-D鍵(例如busybox date -D +10days),它擴展了對時間表達式的支持,類似於 Coreutilsdate -d所具有的。請注意,該選項不會被 Coreutils 辨識date
  • 使用兩種實現都支持的 BusyBox 語法。
  • 在 Docker 容器中安裝Coreutils 。
  • 使用具有 Coreutils 的現有容器。

引用自:https://unix.stackexchange.com/questions/500307