У меня есть отметка времени UNIX, и я хотел бы получить отформатированную дату (например, вывод date
), соответствующую этой отметке времени.
Мои попытки пока:
$ date +%s
1282367908
$ date -d 1282367908
date: invalid date `1282367908'
$ date -d +1282367908
date: invalid date `+1282367908'
$ date +%s -d +1282367908
date: invalid date `+1282367908'
Я хотел бы иметь возможность получить вывод, как:
$ TZ=UTC somecommand 1282368345
Sat Aug 21 05:25:45 UTC 2010
command-line
Umang
источник
источник
info coreutils date
немного более внимательно.date -r 1447264553943
результатыWed Dec 28 01:39:03 BRST 47831
, когда это на самом деле11/11/2015, 3:55:53 PM GMT-2:00
.После некоторого поиска в Google я нашел способ сделать это только с помощью
date
команды:источник
date -d @xxx
не была добавлена до Coreutils 5.3 в 2005 году. Вот как вы должны были сделать это до этого.Этот perl one-liner сделает это:
источник
Встроенные оболочки:
zsh
(4.1.1 (2003) и выше):ksh93
(ksh93i
(2000) и выше):bash
(4.2 (2010) и выше):Во всех тех, заменить
%c
сstrftime()
форматом вы хотите.источник
bash
printf
решение?printf
в gnu.org/software/bash/manual/bashref.html#Bash-Builtins .На osx, иметь в UTC
источник
Еще один прекрасный пример богатого наследия современного Unix. Это действительно возможно при большинстве вариантов BSD:
(Кстати, ваш пример, кажется, выключен на одну секунду)
источник
Ответьте на старый вопрос, но я думаю, что это может быть улучшение, если кто-то еще ищет это. Эта функция Bash работает как в Linux, так и в OS X. Я не тестировал ни на каких других системах BSD. Передайте время эпохи в качестве аргумента этой функции, и она напечатает формат времени RFC-3339.
источник