如何解决 java.text.ParseException: Unparseable date?
How to solve java.text.ParseException: Unparseable date?
我正在尝试将其转换为可读格式,但是,请继续获取 java.text.ParseException: Unparseable date: "2016-11-18T11:13:43.838Z" (at offset 23)
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
try {
Date date1 = df.parse("2016-11-18T11:13:43.838Z");
DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); //
} catch (ParseException e) {
e.printStackTrace();
}
我阅读了有关添加区域设置的其他 SO 答案的建议,但它仍然无法正常工作。
根据 docs,格式字符串中的 Z
表示 RFC 822 时区,例如+01:00。您需要解析 ISO 8601 时区(输入字符串中的 Z
表示 UTC 时区)。你配置 X
:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.US);
您正在解析的字符串不是该模式的正确表示形式,您缺少时区...类似于:-0600
示例:
Date date1 = df.parse("2016-11-18T11:13:43.838-0600Z");
这里是 doc 了解更多信息....
您的代码应如下所示:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try {
Date date1 = df.parse("2016-11-18T11:13:43.838-0600Z");
DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); //
} catch (ParseException e) {
e.printStackTrace();
}
阅读 SimpleDateFormat 的 Javadoc,我发现对时区使用 Z
非常严格。它不会将 "Z"
识别为祖鲁语,它只接受数字时区偏移量。
您可能想尝试 X
,根据文档接受 "Z"
。
请试试这个格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
我正在尝试将其转换为可读格式,但是,请继续获取 java.text.ParseException: Unparseable date: "2016-11-18T11:13:43.838Z" (at offset 23)
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
try {
Date date1 = df.parse("2016-11-18T11:13:43.838Z");
DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); //
} catch (ParseException e) {
e.printStackTrace();
}
我阅读了有关添加区域设置的其他 SO 答案的建议,但它仍然无法正常工作。
根据 docs,格式字符串中的 Z
表示 RFC 822 时区,例如+01:00。您需要解析 ISO 8601 时区(输入字符串中的 Z
表示 UTC 时区)。你配置 X
:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.US);
您正在解析的字符串不是该模式的正确表示形式,您缺少时区...类似于:-0600
示例:
Date date1 = df.parse("2016-11-18T11:13:43.838-0600Z");
这里是 doc 了解更多信息....
您的代码应如下所示:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try {
Date date1 = df.parse("2016-11-18T11:13:43.838-0600Z");
DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); //
} catch (ParseException e) {
e.printStackTrace();
}
阅读 SimpleDateFormat 的 Javadoc,我发现对时区使用 Z
非常严格。它不会将 "Z"
识别为祖鲁语,它只接受数字时区偏移量。
您可能想尝试 X
,根据文档接受 "Z"
。
请试试这个格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");