2012-02-28 50 views
0

在Java 6解析日期,我有,赋予了“T”和“Z”的日期字符串,它看起来像混淆与奇怪的字符

2011-11-28T21:00:00Z 

我怎么会得到一个java.util.Date了上述String的角色并不代表什么意思? (您可以假定时区是运行此Java代码的计算机的默认时区)。

+2

你试过simpledateformat吗? – kosa 2012-02-28 22:19:03

+0

但是Z字符*确实意味着什么。这意味着它是[UTC时间](http://en.wikipedia.org/wiki/ISO_8601#UTC)。 – 2012-02-28 22:19:04

+0

[将符合ISO8601的字符串转换为java.util.Date]的可能重复(http://stackoverflow.com/questions/2201925/converting-iso8601-compliant-string-to-java-util-date) – 2012-02-28 22:22:01

回答

1

假设你要忽略Z,这样做:

String s ="2011-11-28T21:00:00Z"; 
Date d = (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")).parse(s); 
+0

对不起。 iPhone不会让我正确地格式化代码。 – Andre 2012-02-28 22:25:30

+0

缺少双引号。 – 2012-02-28 22:37:57

+0

怪罪于iPhone! ;) – Andre 2012-02-28 22:39:37

0

可以使用的SimpleDateFormat做到这一点(解析或格式化) - 看到Javadocs,这在你给出类似的情况为例:

pattern: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
result: 2001-07-04T12:08:56.235-0700 
0

假设T和Z没有任何意义。你可以从给定的字符串中将它们从T和Z中删除,然后你可以使用下面的代码

String sampleDate =“2011-11-28 21:00:00”;

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date = dateFormat.parse(sampleDate); 
     System.out.println("Date: "+date);