无法解析的日期格式
Unparsable date format
我正在尝试解析日期字符串但出现此错误:
java.text.ParseException: Unparseable date: "Oct 1, 1997, 12:00:00 AM"
这是我用来解析 Date
:
的方法
public static Date parse(@NonNull String dateString, @NonNull String dateFormat) {
val sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
return sdf.parse(dateString);
} catch (ParseException e) {
return null;
}
}
其中 dateString
为 Oct 1, 1997, 12:00:00 AM
,dateFormat
为 MMM d, yyyy, HH:mm:ss a
。
为什么无法解析日期?
我猜你应该用“h”而不是“H”。小写 h 表示 0-12,大写 1 表示 0-24。
总体应该是
MMM d, yyyy, hh:mm:ss a
如果将 SimpleDateFormat 更改为 DateTimeFormatter,异常会显示错误:
Caused by: java.time.DateTimeException: Conflict found: Field AmPmOfDay 1 differs from AmPmOfDay 0 derived from 12:00
预计 12:00 时间是下午。如果您指的是午夜,则应该是 00:00 上午。
您的代码抛出异常,因为字符串 Date 对于字符串模式无效,请查看文档 here
具体来说,如果小时的格式介于 0-23 之间,则字符串为 HH
,但如果您使用 1-12 AM,PM 则必须使用 hh
这是一些参考代码:
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Date x = parse("Oct 1, 1997, 12:00:00 AM", "MMM d, yyyy, hh:mm:ss a");
System.out.println("X String: " + x);
}
public static Date parse(String dateString, String dateFormat) {
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
return sdf.parse(dateString);
} catch (Exception e) {
System.out.println("E???");
return null;
}
}
}
如果你需要编辑,这里是ideone代码:
我正在尝试解析日期字符串但出现此错误:
java.text.ParseException: Unparseable date: "Oct 1, 1997, 12:00:00 AM"
这是我用来解析 Date
:
public static Date parse(@NonNull String dateString, @NonNull String dateFormat) {
val sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
return sdf.parse(dateString);
} catch (ParseException e) {
return null;
}
}
其中 dateString
为 Oct 1, 1997, 12:00:00 AM
,dateFormat
为 MMM d, yyyy, HH:mm:ss a
。
为什么无法解析日期?
我猜你应该用“h”而不是“H”。小写 h 表示 0-12,大写 1 表示 0-24。
总体应该是
MMM d, yyyy, hh:mm:ss a
如果将 SimpleDateFormat 更改为 DateTimeFormatter,异常会显示错误:
Caused by: java.time.DateTimeException: Conflict found: Field AmPmOfDay 1 differs from AmPmOfDay 0 derived from 12:00
预计 12:00 时间是下午。如果您指的是午夜,则应该是 00:00 上午。
您的代码抛出异常,因为字符串 Date 对于字符串模式无效,请查看文档 here
具体来说,如果小时的格式介于 0-23 之间,则字符串为 HH
,但如果您使用 1-12 AM,PM 则必须使用 hh
这是一些参考代码:
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Date x = parse("Oct 1, 1997, 12:00:00 AM", "MMM d, yyyy, hh:mm:ss a");
System.out.println("X String: " + x);
}
public static Date parse(String dateString, String dateFormat) {
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
return sdf.parse(dateString);
} catch (Exception e) {
System.out.println("E???");
return null;
}
}
}
如果你需要编辑,这里是ideone代码: