Преобразуйте метку времени Unix в строку даты

Существует ли быстрая, острота способ преобразовать метку времени Unix в дату из командной строки Unix?

date мог бы работать, кроме он является довольно неудобным указать каждый элемент (месяц, день, год, час, и т.д.), и я не могу выяснить, как заставить это работать правильно. Кажется, что мог бы быть более легкий путь - я пропускаю что-то?

114
задан codeforester 4 June 2018 в 21:53
поделиться

4 ответа

С помощью даты 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
156
ответ дан 24 November 2019 в 02:32
поделиться

date -d @1278999698 +'%Y-%m-%d %H:%M:%S'. Где число за @ - это число в секундах

59
ответ дан 24 November 2019 в 02:32
поделиться

Если вам кажется неудобной нотация, возможно, поможет опция -R-. Она выводит дату в формате RFC 2822. Так что вам не понадобятся все эти идентификаторы: date -d @1278999698 -R. Другая возможность - выводить дату в секундах в вашей локали: date -d @1278999698 +%c. Должно быть легко запомнить :-)

.
4
ответ дан 24 November 2019 в 02:32
поделиться
awk 'BEGIN { print strftime("%c", 1271603087); }'
1
ответ дан 24 November 2019 в 02:32
поделиться