我在PHP中有这个timeDiff函数:
PHP代码:
function timeDiff( $firstTime,$lastTime ){
// convert to unix timestamps
$firstTime=strtotime($firstTime);
$lastTime=strtotime($lastTime);
// perform subtraction to get the difference (in seconds) between times
$timeDiff=$lastTime-$firstTime;
// return the difference
return $timeDiff;
}
现在我想在android中使用上述功能,所以我编码如下:
Android代码:
private double timeDiff(String startTime, String endTime ){
try {
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startTime_d = (Date) parser.parse(formater.format(startTime));
Date endTime_d = (Date) parser.parse(formater.format(startTime));
double dateDiff = startTime_d.getTime() - endTime_d.getTime();
return dateDiff;
}catch(ParseException e){
// TODO Auto-generated catch block
e.printStackTrace();
}catch( NullPointerException e){
Log.e(LOG_TAG, e.toString() );
}
return 0;
}
但是logcat说java.lang.IllegalArgumentException。
我是初学Android程序员,感谢您的帮助! :)
答案 0 :(得分:0)
使用getTime()
Date objects方法,您可以获得直到1970年1月1日的毫秒数。如果您想要日期之间的差异,您可以按如下方式计算差异(以毫秒为单位):
long diffMil = endTime_d.getTime() - startTime_d.getTime();
答案 1 :(得分:0)
您使用formater对象的解析器的输出调用了解析器对象的parse方法。我认为这是不正确的。试试这个:
private double timeDiff(String startTime, String endTime ){
try {
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startTime_d = (Date) parser.parse(startTime);
Date endTime_d = (Date) parser.parse(endTime);
double dateDiff = startTime_d.getTime() - endTime_d.getTime();
return dateDiff;
}catch(ParseException e){
// TODO Auto-generated catch block
e.printStackTrace();
}catch( NullPointerException e){
Log.e(LOG_TAG, e.toString() );
}
return 0;
}