Прочитать дату и время из файла и добавить одну секунду - PullRequest
0 голосов
/ 04 апреля 2019

Я читаю метку времени из файла и хочу скопировать значение в переменную START_DATE и добавить к этому значению 1 секунду.

export START_DATE=`cat ${WINDOW_END_FILE}`

Формат метки времени

2019-04-03-23.59.59

В конце я хотел бы, чтобы дата была

2019-04-04-00.00.00

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Преобразовать дату в время эпохи, затем добавить 1:

fmt='%Y-%m-%d-%H.%M.%S' 
date -j -f %s $(( $(date -j -f "$fmt" 2019-04-03-23.59.59 +%s) + 1 )) +"$fmt"
0 голосов
/ 05 апреля 2019

Использование GNU awk:

$ gawk '{
    gsub(/[^0-9]/," ")                          # change the format mktime friendly
    print strftime("%F-%H.%M.%S",mktime($0)+1)  # to epoch, add one, reformat back
}' file                                         # a timestamp from a file
2019-04-04-00.00.00                             # output this time

mktime превращает datepec (YYYY MM DD HH MM SS [DST]) в число секунд с начала системы. strftime форматирует метку времени в заданный формат.

0 голосов
/ 05 апреля 2019

Ладно, ладно, это не красиво, но весело:

Если я понял, скажем так: START_DATE=2019-04-03-23.59.59

# Pull Date section
date=$(echo $START_DATE | cut -d - -f 1-3)
# Pull Time section
time=$(echo $START_DATE | cut -d - -f 4 | sed 's/\./:/g')
# Use bash builtin date function for conversion
date -d "$cal $time + 1 second" +"%Y-%m-%d-%H-%M-%S"

Вывод:

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