在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;