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');做了诀窍.. –