2011-12-23 131 views
0

日期這是一個HART一個,我怎麼轉換像轉換殼牌

12-23-11 13:37 

在類似的日期(秒應該永遠是00)

Fri Dec 23 13:18:58 CET 2011 

回答

2

使用GNU日期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說,但使用-e和打印年長的perl應該工作)

+0

嗯,但我的日期是MM-DD-YY MM:SS這個例子只適用於YY-MM-DD MM:SS – 2011-12-24 12:36:10

+0

因此,短語'按摩你的輸入'。 – 2011-12-24 16:17:24

1

如果這是您自己的腳本,而不是必須在一百萬個不同環境中運行的腳本,那麼根據您可用的date的版本,您應該可以使用它。

閱讀您的特定版本date的手冊頁。舉例來說,如果它在http://ss64.com/bash/date.html記錄的版本,你可以使用​​爲輸入字符串,等等

在Mac OS X,使用-f選項來指定輸入格式,在-j選項,以便它不嘗試設置日期,並在命令行中指定輸出格式。