在Java中,如何把日期字元串(包含T,Z)轉化為Date類型呢?這就是這篇文章要說明的內容。首先需要明確的是,包含T,Z字元的日期字元串是和時區有關係的,具體日期字元串中包含的各字母的含義見下表:
Letter
Date or Time Component
Presentation
Examples
G
Era designator
Text
AD
y
Year
Year
1996; 96
Y
Week year
Year
2009; 09
M/L
Month in year
Month
July; Jul; 07
w(小寫)
Week in year
Number
27
W
Week in month
Number
2
D
Day in year
Number
189
d
Day in month
Number
10
F
Day of week in month
Number
2
E
Day in week
Text
Tuesday; Tue
u(小寫)
Day number of week
Number
1
a
Am/pm marker
Text
PM
H
Hour in day (0-23)
Number
0
k(小寫)
Hour in day (1-24)
Number
24
K(大寫)
Hour in am/pm (0-11)
Number
0
h
Hour in am/pm (1-12)
Number
12
m
Minute in hour
Number
30
s(小寫)
Second in minute
Number
55
S(大寫)
Millisecond
Number
978
z(小寫)
Time zone
General time zone
Pacific Standard Time; PST; GMT-08:00
Z(大寫)
Time zone
RFC 822 time zone
-0800
X(大寫)
Time zone
ISO 8601 time zone
-08; -0800; -08:00
下面是一些輸入的字元串類型,及應該對應的SimpleDateFormat表達式:
字元串
表達式
2016-04-10T08:38:04.000Z
yyyy-MM-dd』T』HH:mm:ss.SSS』Z』
如下,是Java代碼的一個演示示例:
public static void main(String[] args) throws Exception{
String dateString = "2016-04-10T08:38:04.000Z";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.CHINA);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = format.parse(dateString);
Long l = date.getTime();
Date d1 = new Date(l+1000l);
String s = format.format(d1);
System.out.println(s);
}
如有錯誤,敬請更正!
參考文章如下(略有更改):
http://stackoverflow.com/questions/4216745/java-string-to-date-conversion;
https://segmentfault.com/a/1190000000646877;