5

我有時間以毫秒爲例。 1308700800000;我需要將它轉換成類似Jun 9'11 at 02:15 PM的東西。毫秒自定義日期和時間字符串

我嘗試使用

SimpleDateFormat format = new SimpleDateFormat("MMM D'\''YY"); 

,但我得到一個異常:

Caused by: java.lang.IllegalArgumentException: Unterminated quote 

任何幫助將高度讚賞。

+0

請添加一些代碼和完全異常跟蹤 – fmucar

+3

http://joda-time.sourceforge.net/辦理日期和時間,會讓你的生活變得更輕鬆java – NimChimpsky

回答

11

從異常消息中可以明顯地看出問題將出現在格式字符串中,特別是單引號部分。

望着documentation,我們可以看到:

文本可以使用單引號('),以避免解釋被引用。 「''」代表單引號。

因此,我相信您的格式(該日期的部分,按照現有的例子),可以很簡單的

new SimpleDateFormat("MMM d''yy") 

應該沒有必要涉足反斜槓。

+0

'java.lang.IllegalArgumentException:非法模式字符'Y'' – oliholz

+0

對不起,我主要關注撇號的語法問題,並通過對比的方式將它們插入到現有格式中。爲了使這個複製和粘貼的答案,我已經更新了一天和一年的參數的情況。 –

+2

根據Grooveek的建議,D和Y的上限不起作用,這樣做的伎倆是SimpleDateFormat format = new SimpleDateFormat('hm:mm aaa「上的」MMM d''yy'); –

3

嘗試:

import java.util.*; 
import java.text.*; 

class D { 
    public static void main(String ... args) { 
     System.out.println( 
      new SimpleDateFormat("MMM dd''yy") 
      .format(new Date(1308700800000L )) 
     ); 
    } 
} 

打印:

Jun 21'11 
2

安傑是正確的,但帽d和Y不會爲你工作。閱讀文檔,但 應該工作:

SimpleDateFormat format = new SimpleDateFormat("MMM d''yy 'at' HH:mm:ss z") 
+1

SimpleDateFormat format = new SimpleDateFormat(「'hh:mm aaa」處的'MMM d''yy');做了訣竅.. –