Разница в секундах между пользовательским вводом и текущей датой - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужна разница между двумя датами в секундах. Я ввожу дату и время в формате «ГГГГ-ММ-ДД ЧЧ: ММ», а затем вычисляю разницу в секундах, но run_time в UT C часовой пояс и current_time рассчитывается из системного часового пояса.

#!/bin/bash
run_time=$1
run_time=$(date -d "$run_time" +"%s")
current_time="$(date +"%s")"

echo $run_time
echo $current_time
echo "$(($run_time-$current_time))"

Как получить абсолютное значение секунд между текущей датой и другим?

Редактировать: фактически этот скрипт работал после перезагрузки компьютера. Понятия не имею, почему раньше он показал разные результаты. Я ничего не изменил ни в настройках, ни в компьютерном времени.

1 Ответ

1 голос
/ 29 апреля 2020

Right @ Jetchisel , на основе вашего комментария пример сценария может выглядеть следующим образом:

#!/bin/bash
STARTTIME_UTC=$1
STARTTIME_UTC=$(date -u -d "${STARTTIME_UTC}" +"%s")

echo "CURRENT DATE: $(date)"
CURRENTTIME="$(date +"%s")"

echo
echo "STARTTIME_UTC: ${STARTTIME_UTC} sec since"
echo "CURRENTIME: ${CURRENTTIME} sec since"
echo

echo "RUNTIME: $((${CURRENTTIME}-${STARTTIME_UTC})) sec"

В соответствии с исходным вопросом

Я ввожу дату и время в формат "ГГГГ-ММ-ДД ЧЧ: ММ"

значение времени ввода секунд в ${STARTTIME_UTC} будет установлено равным нулю (:00), в результате чего значение текущего времени секунд в ${CURRENTIME} будет установлено на то, что обеспечивает часы. То есть, если до следующей минуты осталось 18 секунд, а время выполнения будет почти равно нулю, сценарий сообщит о разнице в 42 секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...