今天在看别人写的代码如下:
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
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
再说 Date应该为date吧
String alarmTime = "2013-04-26 15:01:13.347";
不会啊,JDK都一样啊,1.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);