2008-11-10 28 views
4

什麼是轉換的日期在一個格式最快捷的方式,說如何從命令行更改日期格式?

2008-06-01

到另一個格式的日期,說

Sun 1st June 2008

最重要的一點其實是「太陽」,因爲這取決於天,我可能需要擺弄其他東西 - 以非確定性的方式。我正在運行GNU bash,版本3.2.17(1)-release(i386-apple-darwin9.0)。

[背景:我想從命令行執行它的原因是,我真正想要將它寫入TextMate命令中...這是一個令人討厭的任務,我必須始終在textMate ]

回答

8
$ date -d '2005-06-30' +'%a %F' 
Thu 2005-06-30 

有關其他格式選項,請參閱man date

此選項在Linux上可用,但在Darwin上不可用。在達爾文,您可以使用下面的語法來代替:

date -j -f "%Y-%m-%d" 2006-06-30 +"%a %F" 

-f參數指定輸入格式和+參數指定輸出格式。

正如下面的另一張海報所指出的那樣,使用%u(星期幾的數字)而不是%a來避免本地化問題是明智的。

0
date -d yyyy-mm-dd 

如果你想對格式更多的控制權,你還可以添加這樣的:

date -d yyyy-mm-dd +%a 

先手,你說你想要的Sun部件。

+0

對不起 - 我只是得到一個用法錯誤。運行GNU bash,版本3.2.17(1) - 發佈(i386-apple-darwin9.0) – Dycey 2008-11-10 22:10:31

+0

這適用於我的Debian機器。顯然,Mac電腦並非如此。抱歉。 – bdumitriu 2008-11-10 22:18:41

0
date -d ... 

似乎並沒有削減它,因爲我得到一個用法錯誤:

usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
      [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] 

我運行GNU的bash,版本3.2.17(1)-release(I386-Apple蘋果darwin9.0),並儘可能的男人去,日期-d僅僅是

-d dst Set the kernel's value for daylight saving time. If dst is non- 
     zero, future calls to gettimeofday(2) will return a non-zero for 
     tz_dsttime. 
1

日期(1)手冊頁會顯示:

-j Do not try to set the date. This allows you to use the -f flag 
    in addition to the + option to convert one date format to another.
1

感謝那個女神。所以我可以回來參考它 -

date -j -f "%Y-%m-%d" "2008-01-03" +"%a%e %b %Y" 
      ^   ^ ^
      parse using  |  output using 
      this format  |  this format 
          | 
         date expressed in 
         parsing format 

Thu 3 Jan 2008 

謝謝。

0

如果您只想獲得一週中的某一天,請不要嘗試匹配字符串。當語言環境發生變化時會中斷。該%u格式給你一天號:

$ date -j -f "%Y-%m-%d" "2008-01-03" +"%u" 
4 

事實上,這是一個週四。您可以使用該數字來索引您的程序中的數組,或者僅使用該數字本身。

有關更多詳細信息,請參閱date和strftime手冊頁。但是,OS X上的日期manpage是錯誤的,因爲它沒有列出可用的選項。