Как преобразовать формат времени из "2010-10-08 00:00:01" в "1286467201" в awk - PullRequest
1 голос
/ 16 октября 2010

В awk, есть ли способ преобразовать формат времени из "2010-10-08 00:00:01" в 1286467201
, используя команду "date"
$ date +% s -d'2010-10-08 00: 00: 01'
1286467201

1 Ответ

0 голосов
/ 16 октября 2010

GNU awk имеет функцию mktime, которая может выполнять эту работу.Тем не менее, важно знать о часовых поясах.Строка «2010-10-08 00:00:01» не содержит достаточно информации для определения определенного времени.Если вы предполагаете, что это в UTC, вы можете сделать:

$ echo 2010-10-08 00:00:01 | \
  TZ=UTC gawk '{ tstr=$1" "$2; gsub(/[\-:]/, " ", tstr); print mktime(tstr); }'
1286496001

Если вы не укажете переменную TZ, вы получите часовой пояс сервера (который в любом случае должен быть UTC, но многие люди используютлокальное время на серверах, так что это небезопасное предположение).

Вы можете получить вывод UTC из своей команды даты, слегка изменив ее:

$ date +%s -u -d '2010-10-08 00:00:01'
...