2012-06-28 57 views
14

我有一个String包含toString()的结果在java.util.Date的实例上调用。我怎样才能将这个值解析回Date对象?解析java返回fromString()

的Java文档说,这toString()对象Date转换为形式的String

dow mon dd hh:mm:ss zzz yyyy 

当然的,但有没有这样的格式标记如"dow""mon"

有人可以帮我解决这个问题。请注意,不幸的是,toString()呼叫存在于我无法控制的一段代码中。

+2

的可能重复的链接[如何解析新日期的输出()。的toString()](HTTP ://stackoverflow.com/questions/4713825/how-to-parse-output-of-new-date-tostring) –

回答

27

您应该使用SimpleDateFormat而不是date.toString()。这样你就可以控制你想要使用的格式。

Date date = new Date(); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Or whatever format fits best your needs. 
String dateStr = sdf.format(date); 

然后你可以解析回一个日期字符串...

Date date2 = sdf.parse(dateStr); 

要使用你需要SimpleDateFormat的区域设置为英语的toString()格式和使用的格式:"EEE MMM dd HH:mm:ss Z yyyy"

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));` 
+0

嗯..我说过,我无法控制toString(),因为它是由Struts的。无论如何,设置EN语言环境确实有效,所以谢谢。我只需要注意,正确的格式字符串是“EEE MMM dd HH:mm:ss zzz yyyy”,你已经忘记了本月。 – prepetti

+0

我编辑了答案。 :) –

-1

Suppsoe你得到“dateString”的字符串;

SimpleDateFormat sdf = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 

Date date = sdf.parse("dateString"); 
+0

这不起作用,并导致抛出异常。正确的构造函数调用是:'SimpleDateFormat sdf = new SimpleDateFormat(“EEE MMM dd HH:mm:ss Z yyyy”,new Locale(“us”));' – sizzle

0

首先看看java提供的所有日期格式Date Formats。 而且你可以使用SimpleDateFormat类来做你想做的事。

public class DateFormatTest 
    { 
     public DateFormatTest() 
     { 
     String dateString = // in "dow mon dd hh:mm:ss zzz yyyy" format 

     SimpleDateFormat dateFormat = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 
     Date convertedDate = dateFormat.parse(dateString); 

     System.out.println("Converted string to date : " + convertedDate); 
     } 

     public static void main(String[] argv) 
     { 
     new DateFormatTest(); 
     } 
    } 
    }