我必须使用Java 7解析通过json发送的日期-时间字符串,日期-时间格式如下:
2016-04-26T11:35:30.0543787Z
我遇到的问题是秒中的额外小数——如果它只有小数点后3位,例如毫秒,我可以解析它。
我可以使用SimpleDateFormat和格式字符串"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
解析该值,但这给出了一个不正确的值。
任何帮助都将不胜感激!
由于您不关心毫秒的精度,我们可以删除秒中的小数。
**注意:**输出将取决于您的服务器/机器的当前时区。这就是为什么您觉得输出与您预期的不同。
String time = "2016-04-26T11:35:30.0543787Z";
int l = time.lastIndexOf('.');
time = time.substring(0, l);
time = time+"Z";
System.out.println(time);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
try {
Date date = dateFormat.parse(time.replaceAll("Z$", "+0000"));
System.out.println(date);
System.out.println("time zone : " + TimeZone.getDefault().getID());
System.out.println(dateFormat.format(date));
} catch (ParseException e) {
e.printStackTrace();
}