使用SimpleDataFormat的Java中不可解析的时间

使用SimpleDataFormat的Java中不可解析的时间,java,parsing,date,datetime,time,Java,Parsing,Date,Datetime,Time,您好,我正在尝试将我的时间格式化为类似于12:08 PM的格式,以便将其作为类型DATETIME添加到sqlite中。在我的DTO类中,相应的时间字段是Date类型 我得到了上面的错误,这样的字符串是不可解析的。这是为什么 请注意startHrs和startMin是两个JTextFields组件,分别取值为小时(12)和分钟(08) 如何成功解析日期 错误: SimpleDateFormat formatter = new SimpleDateFormat("h:mm a"); edto.se

您好,我正在尝试将我的时间格式化为类似于
12:08 PM
的格式,以便将其作为类型
DATETIME
添加到sqlite中。在我的DTO类中,相应的时间字段是
Date
类型

我得到了上面的错误,这样的字符串是不可解析的。这是为什么

请注意
startHrs
startMin
是两个JTextFields组件,分别取值为小时(12)和分钟(08)

如何成功解析日期

错误:

SimpleDateFormat formatter = new SimpleDateFormat("h:mm a");

edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());

您需要使用“a”设置PM/AM-

尝试分析:

java.text.ParseException: Unparseable date: "12:12"
    at java.text.DateFormat.parse(DateFormat.java:337)

您需要添加AM或PM

12:12 AM

它适用于我

您的
日期格式
h:mm a
,与
12:12
不匹配。它将与
12:12 PM
匹配

试一试-

我建议您使用
HH
而不是
h
,后者表示一天中的小时数(0-23),您不需要预测
Am/pm标记

edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText()+" PM");

在上面的代码中,格式化程序字符串是hour:minute:am或pm,但我可以看到,作为输入,您只提供了hour和minute,这会导致无法解析的日期。请更正解析器格式字符串,或以小时:分钟:AM或小时:分钟:PM格式提供输入。

请发布您的错误。我将删除格式的
a
部分-您的
startMin
字段似乎不包括AM/PM部分。你需要用不同的方式来处理,比如使用收音机,或者24小时。不,它不是自动的吗?我如何根据输入使它自动,不需要定义自动AM或PM?有什么想法吗
edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText()+" PM");
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());
SimpleDateFormat formatter = new SimpleDateFormat("h:mm a");

edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());