Существует ли быстрая, острота способ преобразовать метку времени Unix в дату из командной строки Unix?
date
мог бы работать, кроме он является довольно неудобным указать каждый элемент (месяц, день, год, час, и т.д.), и я не могу выяснить, как заставить это работать правильно. Кажется, что мог бы быть более легкий путь - я пропускаю что-то?
С помощью даты GNU
вы можете сделать:
date -d "@$TIMESTAMP"
# date -d @0
Wed Dec 31 19:00:00 EST 1969
(От: BASH: преобразовать временную метку Unix в дату )
В OS X используйте date -r
.
date -r "$TIMESTAMP"
В качестве альтернативы используйте strftime ()
. Он недоступен непосредственно из оболочки, но вы можете получить к нему доступ через gawk . Спецификатор % c
отображает метку времени в зависимости от языкового стандарта.
echo "$TIMESTAMP" | gawk '{print strftime("%c", $0)}'
# echo 0 | gawk '{print strftime("%c", $0)}'
Wed 31 Dec 1969 07:00:00 PM EST
date -d @1278999698 +'%Y-%m-%d %H:%M:%S'
.
Где число за @
- это число в секундах
Если вам кажется неудобной нотация, возможно, поможет опция -R
-. Она выводит дату в формате RFC 2822. Так что вам не понадобятся все эти идентификаторы: date -d @1278999698 -R
. Другая возможность - выводить дату в секундах в вашей локали: date -d @1278999698 +%c
. Должно быть легко запомнить :-)