我得到了一个在 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