今天在看别人写的代码如下:
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String tempAlarmTime = alarmTime.indexOf(".")==-1?f.format(date.parse(alarmTime)):
f.format(Date.parse(alarmTime.substring(0,alarmTime.indexOf("."))));
最后一句话有问题吗?可以正常运行吗?我自己测试了一下,出现IllegalArgumentException,没法运行啊!请高手帮忙看看java

解决方案 »

  1.   

    是不是他是老包你是新java啊?
      

  2.   

    alarmTime是什么啊?
    再说  Date应该为date吧
      

  3.   

    alarmTime 是个字符串
    String alarmTime = "2013-04-26 15:01:13.347";
    不会啊,JDK都一样啊,1.6的
      

  4.   

    不会啊,JDK都一样啊,1.6的f.format(date.parse(alarmTime))这句话有问题,因为alarmTime格式并不是你指定的日期格式,所以转换错误.
      

  5.   

    出错是出在这句:date.parse(alarmTime)。alarmTime要如何改才不会转换错误呢
    关键是这段代码怎么能运行的呢,奇怪
      

  6.   


    其实在API中已经说的很清楚。
    1.首先date.parse(alarmTime)返回的是一个长整形(自 1970 年 1 月 1 日 00:00:00 GMT 以来字符串参数表示的毫秒数)。而f.fromat接收的参数是需要一个Date类型。所以会报illegleArgumentException。
    2.在API中已经说明了date.parese(String str)方法,已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。
    3.所以可以将date改成f.
    String alarmTime="2012-02-11 12:22:11";
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     Date date = new Date();
     String tempAlarmTime = alarmTime.indexOf(".")==-1?f.format(f.parse(alarmTime)):
     f.format(f.parse(alarmTime.substring(0,alarmTime.indexOf("."))));
     System.out.println(tempAlarmTime);
      

  7.   

    JDK6不用date了吧?似乎是DateFormat了