【问题标题】:Unparseable time in Java with SimpleDateFormat使用 SimpleDateFormat 在 Java 中无法解析的时间
【发布时间】:2013-01-30 04:13:47
【问题描述】:
SimpleDateFormat formatter = new SimpleDateFormat("h:mm a");

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

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

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

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

如何成功解析日期?

错误:

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

【问题讨论】:

  • 请发布您遇到的错误
  • 我会删除格式中的 a 部分 - 您的 startMin 字段似乎不包含 AM/PM 部分。您需要以不同的方式处理它,例如使用单选框或 24 小时。
  • 不,它不是自动的吗?

标签: java parsing date datetime time


【解决方案1】:

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

尝试解析:

12:12 AM

【讨论】:

  • 自动上午或下午?任何想法
【解决方案2】:

您需要添加上午或下午

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

对我有用

【讨论】:

    【解决方案3】:

    您的dateformath:mm a,与12:12 不匹配。它将与12:12 PM 匹配。

    试试-

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

    我建议你使用HH 而不是h 代表一天中的小时(0-23),你不需要预测Am/pm marker

    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
    edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());
    

    【讨论】:

    • 如何根据输入使其自动生成,不想定义它
    【解决方案4】:
    SimpleDateFormat formatter = new SimpleDateFormat("h:mm a");
    
    edto.setDate(formatter.parse(startHrs.getText() + ":" + startMin.getText());
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多