2016-04-13 354 views
-6

我將日期作爲字符串從Web服務中獲取。
它們採用以下字符串格式。
"2016-04-12 12:18:11.000 EDT"
該文檔不是很好,但我想這是一些標準的日期格式。
你認識這種格式嗎?
我怎樣才能最輕鬆地解析成Date特定日期字符串格式

+4

事實上的文檔真的很好,它甚至還帶有一個[教程](https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat。 html) – Norsk

+0

我的意思是web服務文檔。哇,4降價...這太瘋狂了。謝謝一堆。人們對SO Java標籤非常有幫助。 –

+0

您在Java中擁有金徽章,並且不知道如何搜索解析String to Date?這就是我所說的「哇」。 – Tom

回答

3

我認爲它要麼yyyy-MM-dd HH:mm:ss.SSS zzzyyyy-dd-MM HH:mm:ss.SSS zzz

從例如2016年4月12日,也可以是2016年4月12日或2016年12月4日

簡單的例子,考慮yyyy-MM-dd HH:mm:ss.SSS zzz

DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz"); 
    TimeZone gmt = TimeZone.getTimeZone("GMT"); 
    gmtFormat.setTimeZone(gmt); 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); 
    Date dd = df.parse("2016-04-12 12:18:11.000 EDT"); 
    System.out.println(gmtFormat.format(dd)); 

輸出:2016-04-12 06:48:11.000 GMT

+0

這個月在我的情況下首先,謝謝。我會試試看。 –

2

您可以這樣做:

String date = "2016-04-12 12:18:11.000 EDT"; 
DateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z", Locale.US); 
Date d = parseFormat.parse(date); 

如果您的系統使用不同的語言,區域設置很重要。

1

使用這種模式:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z"); 


y Year (e.g. 12 or 2012). Use either yy or yyyy. 
M Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM) 
d Day in month. Number of d's determine length of format (e.g. d or dd) 
H Hour of day, 0-23 (normally HH) 
m Minute in hour, 0-59 (normally mm) 
s Second in minute, 0-59 (normally ss) 
S Millisecond in second, 0-999 (normally SSS) 
z Time Zone 
+0

另一個答案建議zzz而不是z(用於時區)。有什麼不同? –

+0

其實沒有什麼區別。一個'z'就足夠了。 –