从bash(OSX)中输入HH:mm获取剩余秒数

时间:2016-06-27 05:18:55

标签: bash

我想写一个简单的bash脚本。输入是" HH:mm"字符串和输出是该时间的剩余秒数,例如

$ getsec.sh 12:55 # now it's 12:30. so 25 minutes left.
1500

我认为使用date命令可能会解决这个问题。但似乎它并不存在我可以使用的简单方法。

(检查一些答案后添加)

看起来date命令取决于操作系统和版本 我使用OSX,建议答案的结果如下。

$ date -d '12:55' '+%s'
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

3 个答案:

答案 0 :(得分:2)

* BSD(以及OSX)date命令具有与GNU date不同的选项语法,GNU now=$(date -j +%s) then=$(date -j -f '%H:%M' 12:55 +%s) echo "$((then-now)) seconds left" 在Linux上无处不在,可在许多其他平台上使用(包括OSX,Homebrew,Fink,等)。

demo

对于便携式解决方案,可以改用便携式脚本语言。

答案 1 :(得分:1)

你可以这样做:

ts=$(date -d '12:55' '+%s')
now=$(date '+%s')

diff=$((ts-now))

答案 2 :(得分:1)

此脚本接受目标时间作为命令行参数(在脚本中作为参数$1

访问)
#!/bin/bash

current_time=$(date +%s)
target_time=$(date +%s --date="$1")

# evaluate the difference using an arithmetic expression
echo "seconds remaining to target time: "$(( target_time - current_time ))

用法:

% ./get_sec.sh "22:00"

输出:

seconds remaining to target time: 16151