我正在一个我几乎只能访问busybox工具的环境中工作,并尝试将格式为Mon 1月1日格林威治标准时间23:59:59的日期转换为shell脚本中的unix时间戳.我无法更改我正在解析的输入时间的格式.似乎busybox日期无法理解此日期格式或任何其他具有命名月份的格式.我有一个非常丑陋的脚本可以做到这一点,但有没有人知道更好的东西?
编辑:日期-D选项对我不起作用,我明白了
date: invalid option -- 'D'
BusyBox v1.24.1 (2018-01-11 16:07:45 PST) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]`
解决方法:
busybox date2完全能够使用一些help1解析给定字符串中的日期(GMT时区除外).
$gdate='Mon Jan 1 23:59:59 2018 GMT'
$TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z'
Mon Jan 1 23:59:59 GMT 2018
使用-D选项提供帮助:源格式的描述.
要获取UNIX时间戳,只需添加期望’%s’的输出格式:
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' +'%s'
1514851199
1
busybox日期具有GNU date命令的大部分功能,而GNU date命令则不具备:-D选项.获取busybox帮助,如下所示:
$busybox date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]
Display time (using +FMT), or set time
06003
注意-D FMT选项.
2
请注意,您可以通过两种方式调用busybox日期:
$busybox date
或者,如果在正确的PATH目录中安装了名为date的busybox链接:
$date
要验证,只需要–version或–help找出您已安装的日期.
使用GNU日期:
$date --version
date (GNU coreutils) 8.28
或(busybox日期):
$date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary.
…
…
标签:linux,date,busybox
来源: https://codeday.me/bug/20190809/1634360.html