【问题标题】:SimpleDateFormat parse exception for TimeSimpleDateFormat 解析时间异常
【发布时间】:2026-01-01 02:15:01
【问题描述】:
DateFormat FORMAT_TIME_AM = new SimpleDateFormat("hh:mm");//works

如果我使用此代码,一切正常,但是当我插入“a”以显示最后的 AM/PM 时,会引发解析异常。

DateFormat FORMAT_TIME_AM = new SimpleDateFormat("hh:mm a");//does not works

这是错误:

com.finalagenda W/System.err java.text.ParseException: Unparseable date: "2:11" (at offset 4) com.finalagenda W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:579)

有什么想法吗?

【问题讨论】:

  • 请显示您使用 DateFormat 的代码
  • 好吧,迈克,这可能是个问题,您知道如何使用 SimpleDateFormat 输入 AM/PM 字符串吗?

标签: java android parsing time error-handling


【解决方案1】:

SimpleDateFormatHHhh中是不同的。 HH 从 0 到 23 用于 24 小时格式和 hh 从 1 到 12 (AM/PM) 12 小时格式。

"HH:mm" -> 13:30 is "hh:mm a" -> 01:30 PM

【讨论】:

  • 我知道,但我的想法是能够根据 Android 系统语言显示两种格式。
【解决方案2】:

好的,伙计们,我刚刚修复了,只是在我的字符串时间末尾添加了“AM”,如果需要,它会自动更改为“PM”。感谢您所做的一切,希望这对其他人有所帮助。

【讨论】:

    【解决方案3】:

    下面的代码在这里可以正常工作。你能提供你的部分代码吗?

    public static void main(String args[])
    {
        DateFormat FORMAT_TIME_AM = new SimpleDateFormat("hh:mm a");
        System.out.println(FORMAT_TIME_AM.format(new Date()));
    }
    

    【讨论】:

    • dataHora.setHora(timePicker.getCurrentHour() + ":" + timePicker.getCurrentMinute()); txtDataHora.setText(dataHora.toString());选择器.取消();我尝试解析这个字符串,在一种格式中它不会在另一种格式中工作。