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

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

您好,我正在尝试将我的时间格式化为12:08 PM像 type 添加到 sqlite 中的东西DATETIME。在我的 DTO 类中,相应的时间字段是Date类型。

我收到上述错误,即此类字符串不可解析。为什么是这样。

请注意startHrsstartMin两个 JTextFields 组件分别采用 Hours (12) 和 Minutes (08) 的值。

如何成功解析日期?

错误:

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

4 回答 4

2

您需要添加上午或下午

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

这个对我有用

于 2013-02-14T11:26:25.940 回答
1

你的dateformatish:mm a与 . 不匹配12:12。它将与12:12 PM.

尝试 -

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

我建议您在不需要预测的情况下使用 whichHH代替代表一天中的小时 (0-23) 。hAm/pm marker

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());
于 2013-02-14T11:29:00.517 回答
0

您需要使用“a”来设置 PM/AM - http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

尝试解析:

12:12 AM
于 2013-02-14T11:24:58.660 回答
0
SimpleDateFormat formatter = new SimpleDateFormat("h:mm a");

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

在上面的代码格式化字符串是小时:分钟:上午或下午,但我可以看到作为输入,您只提供小时和分钟,这会导致无法解析的日期。更正您的解析器格式字符串或以小时:分钟:上午或小时:分钟:下午格式提供输入。

于 2013-02-14T12:17:24.573 回答