天天看點

shell date 日期轉換

date參數說明

-d, --date=STRING

              顯示字元串指定的時間,并非目前時間

其他參數通過下面的執行個體就可以看出其用法了

比如:%Y    2010    (年份,四位)

            %m    月份

            %d    日期

            +%Y-%m-%d 相當與%F

            %H:%M:%S 時(24小時格式):分:秒,相當與%T

            %I:%M:%S 時(12小時格式):分:秒

其他還有很多參數,可以man date檢視。

  1. # echo $LANG
  2. en_US
  3. # date -d "2010-11-01 00:00:00" +%s
  4. 1288540800
  5. # date -d "2010-11-01 00:00:00" +%Y-%m-%d" "%H:%M:%S
  6. 2010-11-01 00:00:00
  7. # date -d "2010-11-01 00:00:00" +%Y-%m-%d" "%T 
  8. 2010-11-01 00:00:00
  9. # date -d "2010-11-01 00:00:00" +%F" "%T

# 需要注意的一點:環境LANG的值,中文字元編碼的情況

# 請看下面的例子:

# 英文環境下,Mon Nov  1 00:00:00 CST 2010這樣的字元可以直接進行轉換

  1. # export LANG=en_US
  2. # echo $LANG
  3. en_US
  4. # date -d @1288540800
  5. Mon Nov 1 00:00:00 CST 2010
  1. # date -d "Mon Nov 1 00:00:00 CST 2010" +%Y-%m-%d" "%H:%M:%S
  2. 2010-11-01 00:00:00
  3. # date -d "Mon Nov 1 00:00:00 CST 2010" +%F" "%T 
  4. 2010-11-01 00:00:00
  5. # date -d "Mon Nov 1 00:00:00 CST 2010" +%F 
  6. 2010-11-01

# 中文環境下,2010年 11月 01日 星期一 00:00:00 CST這樣的字元不能直接進行轉換,需要注意!!!

  1. # export LANG=zh_CN.utf8
  2. # echo $LANG
  3. zh_CN.utf8
  4. # date -d @1288540800
  5. 2010年 11月 01日 星期一 00:00:00 CST

下面的做法是不能得到預期的,對比一下就可以看到了:

  1. # date +%F
  2. 2011-11-01
  3. # date -d "Mon Nov 1 00:00:00 CST 2010" +%F
  4. 2010-11-01
  5. # date -d "2010年 11月 01日 星期一 00:00:00 CST" +%F
  6. 2011-11-01

參考http://yangqijun.iteye.com/blog/1150411

繼續閱讀