2012-02-28 54 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);