Bash - 将时间间隔字符串转换为nr.几秒钟

Pas*_*mer 0 bash time timestamp

我正在尝试将描述时间间隔的字符串转换为相应的秒数.

经过一些实验,我发现我可以date像这样使用:

soon=$(date -d '5 minutes 10 seconds' +%s); now=$(date +%s)
echo $(( $soon-$now ))
Run Code Online (Sandbox Code Playgroud)

但我认为应该有一种更简单的方法将"5分10秒"等字符串转换为相应的秒数,在本例中为310. 有没有办法在一个命令中执行此操作?

注意:虽然可移植性很有用,但这不是我的首要任务.

123*_*123 8

你可以从纪元开始

date -d"1970-01-01 00:00:00 UTC 5 minutes 10 seconds" "+%s"
310
Run Code Online (Sandbox Code Playgroud)

你也可以很容易地分时

Time="1 day"
date -d"1970-01-01 00:00:00 UTC $Time" "+%s"
86400
Run Code Online (Sandbox Code Playgroud)