2011-12-23 4 views

ответ

2

С Gnu даты 5.97, вы можете сделать:

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

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

Поскольку гну дата не повсеместно, вот быстрый скрипт 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 и печать .)

+0

Ну, но моя дата MM-DD-YY MM: SS этот пример работает только с YY-MM-DD MM: SS –

+0

Отсюда фраза «массаж вашего входа». –

1

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

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

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

Смежные вопросы