Я пишу приведенную ниже команду 1 час назад в формате Solaris.
date +%Y-%m-%d-%H:%M:%S -M "1 hour ago"
Но мне нужно полчаса назад отформатировать в линуксе.
Я пишу приведенную ниже команду 1 час назад в формате Solaris.
date +%Y-%m-%d-%H:%M:%S -M "1 hour ago"
Но мне нужно полчаса назад отформатировать в линуксе.
Если вы работаете в Linux, это должно работать при запуске в bash:
date --date=@$((`date +%s`-1800))
(Я тестировал его на Solaris 11, используя gdate вместо даты. У меня сейчас не загружена машина с Linux.)
Команда 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));'
POSIX
), как показано в Как найти текущую дату минус семь дней в Unix?
- person Thomas Dickey; 08.04.2015