Моя система показала время, подобное этому 10:42, когда я ввел команду
date +%R
. Мне нужно взять всего минут времени. Это означает, что это 642 минуты. Есть ли какая-либо команда или сценарий оболочки для отображения общего времени в минутах?
Моя система показала время, подобное этому 10:42, когда я ввел команду
date +%R
. Мне нужно взять всего минут времени. Это означает, что это 642 минуты. Есть ли какая-либо команда или сценарий оболочки для отображения общего времени в минутах?
Ответы:
Чтобы получить только общее количество минут за день, я использовал бы следующую команду:
$ date "+%H*60+%M" | bc
Пример:
$ date +%R
09:30
$ date "+%H*60+%M" | bc
570
Хитрость заключается в том, чтобы отформатировать date
вывод, чтобы позволить bc
интерпретировать и вычислить формулу.
zsh
date "+%H*60+%M" | bc
работает так же хорошо. Вероятно, в любой оболочке.
просто bash:
IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))
Принудительное обращение с обеими переменными как с базой-10, чтобы избежать ошибок при генерации оболочки для недопустимых восьмеричных чисел 08
и09
echo $(( $(date "+%k * 60 + 10#%M") ))
это то , что я хотел сказать
Использование date
и bash
:
eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
пример
$ date
Fr 10. Jul 08:45:05 CEST 2015
$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525
Используя date
и z-shell (zsh):
IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
пример
% date
Fr 10. Jul 08:40:53 CEST 2015
% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520
IFS=: set -- $(date +%T); echo $1
возвращается 08:16:52
- вам нужноIFS=:; set ...
Вам не нужно использовать IFS, вы можете сделать это следующим образом:
date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo "Total minutes: $(($H * 60 + $M))"
вывод:
Total minutes: 593
bash: 9 17*60+: syntax error in expression (error token is "17*60+")
echo $(date +"%H*60+%M") | bc
, он работает также в Zsh;)