2013-07-08 127 views
2

我有一个TimeStamp'2013-06-24 10:46:11.0',我需要切断.0部分,所以我所做的就是使用SimpleDateFormat解析它到字符串,然后解析它到日期,第一次转换是好的,但第二个(字符串到日期)引发java日期时间。以特定格式解析字符串

public void convert(Object object) { 
    Date date; 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    date = object().getDate(); 
    String formated = format.format(date); 
    try { 
     date = format.parse(formated); 
    } catch (ParseException ex) { 
     Logger.getLogger(DlgConsultaFactura.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

我想到的是这样的2013年6月24日10时46分十一秒的日期,但我得到的是这个日期周一6月24日10时46分十一秒CDT 2013

任何帮助将不胜感激。谢谢。

+1

@Andeas:他不使用对象,他使用object(),这是一个方法引用。很可能是一个错误。 –

+0

@Erik yepp,承认它 - 删除我的评论......但它看起来错了:)除非他有一个对象()方法... –

+0

是的。该方法也不会返回任何内容,它会输入错误的输入参数。我认为这不可行。 –

回答

2

Mon Jun 24 10:46:11 CDT 20132013-06-24 10:46:11实际上是相同的值。 Mon Jun 24 10:46:11 CDT 2013是根据您的默认语言环境。

你对日期的内部表示和显示格式感到困惑。

要在2013-06-24 10:46:11中打印,可以再次使用相同的SimpleDateFormat对象。

您可以使用DateFormat#format(Date)打印日期或返回所需格式的字符串表示,即"yyyy-MM-dd HH:mm:ss"。事情是这样的:

String myDt = format.format(date); 
// 2013-06-24 10:46:11 
+0

但问题是我想在一个日期正确的格式,如果我再次使用SimpleDateformat它将返回一个字符串。 – Blackmore

+0

@Blackmore:请阅读我答案的第一行。使用'parse'方法的返回值你已经得到一个日期为'2013-06-24 10:46:11'或'Mon Jun 24 10:46:11 CDT 2013'。两个值都是相同的。 – anubhava

+0

我想我给自己误会了,我知道2013-06-24 10:46:11,星期一6月24日10:46:11 CDT 2013是一样的,问题是返回的格式,当我得到字符串( 2013-06-24 10:46:11)我inmediatley试图解析它到日期,但当我这样做时返回一个不同的格式,我需要正确的格式显示在屏幕上。我非常感谢你的帮助。 – Blackmore

0

不是最好的方式,但如果你只想要日期的字符串表示一个快速简便的一个...

formated = formated.substring(0, formated.length()-2); 

:)

+0

然后,我如何解析它以保存格式的日期?谢谢您的帮助。 – Blackmore

+1

@Blackmore只有表示日期表示为String的格式才有意义。当你将'String'解析为'Date'时,谈论“格式”不再有意义。 –

+0

这是一个很好的解释。谢谢。 – Blackmore

0

日期格式即的SimpleDateFormat只是根据您的需要格式化日期。

解析返回传递的字符串的日期表示(或戳你的情况)。 格式返回传入的Date对象的字符串表示。

在这两种情况下,你看到相同的日期正好表示是不同的。

+0

我知道,我想要做的是获得我的日期的特定格式。谢谢您的帮助。 – Blackmore