2013-07-18 95 views
0

我知道這可能是一個愚蠢的問題,但我使用SimpleDateFormat將日期轉換爲字符串最困難。我有一個本地日期使用SimpleDateFormat將直接日期轉換爲字符串

「週四7月18日18時56分51秒PDT 2013」​​

,我試圖把它直接在格式

「YYYY-MM轉換-dd'T'hh:MM:SS」。

我希望字符串是什麼樣子是這樣的:

「2013-07-18T18:56:51」

什麼我得到的是:

「2013-07-18T06:56:51」

任何幫助,將不勝感激。

+8

代替'hh'的使用'HH'。 'h'是上午/下午的小時,'H'是一天中的小時。 –

+0

@RameshK:不,那仍然是'hh'而不是'HH'。 –

回答

8

您正在使用hh,這是12小時制。你想用HH代替:

"yyyy-MM-dd'T'HH:mm:ss" 

docs for SimpleDateFormat

  • HH - 在凌晨小時/時(1-12)
  • HH - 一天中的小時(0-23)
  • KK - 一天中的小時(1-24)
  • KK - 小時的AM/PM(0-11)

(相當爲什麼他們扭轉了資本在12/24小時條款kk/KK超越我,但後來整個Java的日期/時間API是瘋了...)

而且,雖然看起來你現在還好,但值得考慮時區方面。 A Date沒有任何時區或日曆的概念 - 這只是時間。 SimpleDateFormat確實有一個相關的時區和日曆(和文化),所以要確保它們是正確的爲您的目的。

+1

欲瞭解更多信息,請查看[日期和時間模式](http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) –

+0

是的 - 我正式推遲...謝謝! – MweyaMutsvene

+0

@RubensMariuzzo:是的,它只是鏈接到那個 - 或者說JDK 7的版本。你有沒有注意到kk/KK的奇怪之處? (我現在在答案中指出。) –

0

您必須使用HH而不是hh

yyyy-MM-dd'T'HH:mm:ss 

字母日期或時間組件演示例子

h小時在(0-23)數0

ķ每小時(1-24)24號

K小時am/pm(0-11)N在AM/PM(1-12)12號

赭0

h小時你可以閱讀更多關於Datehere

0

package com.stackoverflow.experiments;

import java.text.SimpleDateFormat; import java.util.Calendar;

公共類SimpleDateFormatExperiment {

/** 
* 
*/ 
public SimpleDateFormatExperiment() { 
    // TODO Auto-generated constructor stub 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(Calendar.getInstance().getTime())); 
} 

}