Формат времени 30 минут назад в Solaris

Я пишу приведенную ниже команду 1 час назад в формате Solaris.

date +%Y-%m-%d-%H:%M:%S -M  "1 hour ago"

Но мне нужно полчаса назад отформатировать в линуксе.


person Basudev    schedule 05.04.2015    source источник


Ответы (2)


Если вы работаете в Linux, это должно работать при запуске в bash:

date --date=@$((`date +%s`-1800))

(Я тестировал его на Solaris 11, используя gdate вместо даты. У меня сейчас не загружена машина с Linux.)

person Andrew Henle    schedule 10.04.2015

Команда Solaris 10 date не поддерживает флаг -M, который является расширением даты GNU.

Альтернативой является использование perl.

Вот как получить один час назад:

perl -e 'my ($y,$m,$d,$H,$M,$S)=(localtime(time-3600))[5,4,3,2,1,0];
    printf "%04d-%02d-%02d-%02d:%02d:%02d\n",$y+1900,$m+1,$d,$H,$M,$S;'

и полчаса назад:

perl -e 'my ($y,$m,$d,$H,$M,$S)=(localtime(time-1800))[5,4,3,2,1,0];
    printf "%04d-%02d-%02d-%02d:%02d:%02d\n",$y+1900,$m+1,$d,$H,$M,$S;'

Изменить: используя модуль POSIX Perl, вы также можете сделать это проще:

perl -e 'use POSIX qw(strftime);
    print strftime("%Y-%m-%d-%H:%M:%S\n", localtime(time-1800));'
person jlliagre    schedule 05.04.2015
comment
Еще проще (с использованием модуля POSIX), как показано в Как найти текущую дату минус семь дней в Unix? - person Thomas Dickey; 08.04.2015