Конвертировать дату в Shell - PullRequest
0 голосов
/ 23 декабря 2011

Это олень, как мне конвертировать дату вроде

12-23-11 13:37

Во что-то вроде (секунды всегда должны быть 00)

Fri Dec 23 13:18:58 CET 2011

?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

С gnu date 5.97 вы можете сделать:

$ date -d '11-12-23 13:37'

чтобы получить то, что вы хотите, так что все, что вам нужно сделать, это помассировать ваш ввод.

Поскольку дата gnu не является вездесущей, вот быстрый скрипт на Perl, который делает то, что вы хотите:

$ echo 12-23-11 13:37 |
    perl -MTime::Local -wnE '
    y/-:/  /;
    @F=split;
    say scalar localtime timelocal( 0, $F[4], $F[3], $F[1], $F[0] - 1,$F[2]);
'
Fri Dec 23 13:37:00 2011

(Требуется perl 5.10 для -E и, скажем, но должен работать в старом perl с использованием -e и print.)

1 голос
/ 23 декабря 2011

Если это скрипт для вас, а не то, что придется запускать в миллионе различных сред, то в зависимости от того, какую версию date вы имеете в наличии, вы сможете использовать его.

Прочтите справочную страницу для вашей конкретной версии date. Например, если это версия, задокументированная на http://ss64.com/bash/date.html,, вы можете использовать --date для входной строки и т. Д.

В Mac OS X: используйте параметр -f, чтобы указать формат ввода, параметр -j, чтобы он не пытался установить дату, и укажите формат вывода в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...