【问题标题】:SimpleDateFormat parseexception when parsing time解析时间时SimpleDateFormat parseexception
【发布时间】:2012-09-10 13:11:48
【问题描述】:

我已将一些日期转换为字符串并使用

将它们存储在我的数据库中
      DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

当它们以字符串形式出现时,它们看起来像这样:“12-09-2012 02:33:00”

然后我尝试使用

检索它们
      DateFormat formatter = new SimpleDateFormat("hh:mm:ss"); 

这给了我一个解析异常,说它是不可解析的日期,这是异常消息:

java.text.ParseException:无法解析的日期:“12-09-2012 02:33:00”(偏移量 2)

这里有一些代码可以更好地理解我在做什么:

    String start="";
    String slut="";
    DateFormat formatterday = new SimpleDateFormat("hh:mm:ss");

            start=formatterday.format(formatterday.parse(a.startTime));
            slut=formatterday.format(formatterday.parse(a.endTime));  

我尝试分离我的语句,以便我先解析然后格式化,并且错误似乎在解析过程中出现。

【问题讨论】:

  • 什么语言?什么平台?
  • 对不起,我应该提到。 starttime 和 endtime 是之前从日期转换而来的字符串
  • @Ken 你能System.out.println 他们(两个字符串)吗?
  • 是的,在我尝试删除日期并保留时间之前,我能够在我的设备 (android) 上打印它们。 - 也许我可以拆分字符串而不是转换我真的只需要一个视觉表示(我刚刚做了一个 system.out.println(); 我能够得到字符串)
  • 当 SQL 具有 DATETIME 日期类型时,为什么要将日期存储为字符串?没有格式化,没有解析,只有日期。

标签: java date date-format simpledateformat


【解决方案1】:

简单日期格式接受特定模式,并且您的字符串值“12-09-2012 02:33:00”显然不遵循给定模式“hh:mm:ss”。为了将原始日期字符串转换为日期对象,您需要使用原始模式。

简单示例:

DateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
DateFormat formatter2 = new SimpleDateFormat("hh:mm:ss");

String originalDateValue = "12-09-2012 02:33:00";
Date originalDate = formatter1.parse( originalDateValue );

String shortDateValue = formatter2.format( originalDate );
Date shortDate = formatter2.parse( shortDateValue );

System.out.println( originalDateValue );
System.out.println( originalDate );

System.out.println( shortDateValue );
System.out.println( shortDate );

这将打印出来:

12-09-2012 02:33:00
Wed Sep 12 02:33:00 CEST 2012
02:33:00
Thu Jan 01 02:33:00 CET 1970

请注意,shortDate 从时代开始就具有价值 -> 1.1.1970。

【讨论】:

  • 非常感谢这很好地解释了解决方案。澄清因素是你所说的模式
【解决方案2】:

@Ken 你的 a.startTime 变量的日期格式应该是“hh:mm:ss”格式。

如果您的 a.startTime 值类似于 02:33:00,那么您的代码应该可以工作。

所以请检查您的 a.startTime 值并使用正确的日期格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多