busybox 格式日期

busybox 格式日期

我得到了一个在 Linux 上完美运行的命令

date -d @$(git log -1 --format=%at) '+%Y-%m-%d_%H-%M-%S'

现在我尝试使用 busybox (v1.31.1) 进行相同的格式化,但它总是失败并出现以下错误:

无效日期“1591877098”

答案1

看来你忘记了@。如果 busybox date 不支持该格式,您将得到:

invalid date '@1591877098'

不是:

invalid date '1591877098'

busybox自 2010 年 1.17.0 版本以来date一直支持date -d @epochtime(即使帮助消息中没有广告;请参阅犯罪)。

$(...)不过你忘了周围的引号。

应该:

date -d "@$(git log -1 --format=%at)" +%Y-%m-%d_%H-%M-%S

%Y-%m-%d也可以简化为%F.

date与 GNU 相反,busyboxdate支持指定输入格式-D(since 1.10.0, 2006,犯罪;尽管可以在构建时排除该支持)除了输出格式之外,所以您还可以执行以下操作:

date -D %s -d "$(git log -1 --format=%at)" +%F_%H-%M-%S

答案2

date帮助来自busybox 文档

date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

Options:

        [-s] TIME       Set time to TIME
        -u              Work in UTC (don't convert to local time)
        -R              Output RFC-822 compliant date string
        -I[SPEC]        Output ISO-8601 compliant date string
                        SPEC='date' (default) for date only,
                        'hours', 'minutes', or 'seconds' for date and
                        time to the indicated precision
        -r FILE         Display last modification time of FILE
        -d TIME         Display TIME, not 'now'
        -D FMT          Use FMT for -d TIME conversion
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]

因此,纪元秒不是有效的输入时间格式。

是否%ai能够%aI满足您的需要?:

$ git help log
...
               %at
                   author date, UNIX timestamp

               %ai
                   author date, ISO 8601-like format

               %aI
                   author date, strict ISO 8601 format

相关内容