как я могу занять общие минуты со времени?

Моя система отобразила время как это 10:42, когда я ввел команду date +%R. Я должен взять в общие минуты времени. Это означает как это 642 минуты. Есть ли какой-либо командный сценарий или сценарий оболочки для отображения общего времени в минутах?

8
задан 10 July 2015 в 00:32

5 ответов

Чтобы только получить общие минуты дня я использовал бы следующую команду:

$ date "+%H*60+%M" | bc

Пример:

$ date +%R
09:30
$ date "+%H*60+%M" | bc
570

прием должен отформатировать эти date вывод, чтобы позволить bc интерпретировать и вычислять формулу.

11
ответ дан 23 November 2019 в 05:22

просто удар:

IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))

Принуждение обеих переменных рассматриваться как основу 10, избежать ошибок броска оболочки для недопустимых восьмеричных чисел 08 и 09

5
ответ дан 23 November 2019 в 05:22
date +%R | awk -F ":" '{print ($1 * 60) + $2}'

Или

 echo $((($(date +%l) * 60 ) + $(date +%M)))

date +%l получит часы, умножится с 60 и добавит минуты date +%M

3
ответ дан 23 November 2019 в 05:22

Вы не должны использовать IFS, можно сделать это этот путь:

date=$(date +'%l:%M')
read H M <<< ${date//[-: ]/ }
echo  "Total minutes: $(($H * 60 + $M))"

вывод:

Total minutes: 593
1
ответ дан 23 November 2019 в 05:22

Используя 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-оболочка (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
2
ответ дан 23 November 2019 в 05:22

Другие вопросы по тегам:

Похожие вопросы: