[英]Java: unparseable date exception error
我无法解析迄今为止的字符串
public class Main {
public static void main(String s[])
{
SimpleDateFormat mdyFormat1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSSZ");
String date="2015-08-27T11:46:35.336Z";
try {
Date date1=mdyFormat1.parse(date);
System.out.println(date1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
出错
java.text.ParseException: Unparseable date: "2015-08-27T11:46:35.336Z"
at java.text.DateFormat.parse(Unknown Source)
at com.connectm.onprocess.logincontroller.Main.main(Main.java:14)
你有两个问题:
2015-08-27T11:46:35.336Z
,46 到 35 之间的冒号 ( 2015-08-27T11:46:35.336Z
应该是 。 (点)。 new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSSZ")
格式new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSSZ")
。 所以它应该是2015-08-27T11:46.35.336Z
。 而 Z 是下一个问题。注意mdyFormat1
对象初始化从
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSSZ");
到
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
public static void main(String[] args) {
SimpleDateFormat mdyFormat1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
String date="2015-08-27T11:46:35.336Z";
try {
Date date1=mdyFormat1.parse(date);
System.out.println(date1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
2015 年 8 月 27 日星期四 11:46:35 CDT
正如其他人指出的那样,您的格式模式无法匹配您的输入数据。
此外,您正在使用旧的过时类,这些类已被证明是麻烦、混乱和有缺陷的。 在 Java 8 及更高版本中,它们已被新内置的 java.time 框架所取代。
您的输入数据采用标准 ISO 8601 格式。 该格式在 java.time 中默认用于解析和生成日期时间值的字符串表示。 因此,无需指定格式化程序。
Instant instant = Instant.parse( "2015-08-27T11:46:35.336Z" );
String output = instant.toString();
如果需要,您可以指定时区。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.