如何将这个PHP timeDiff代码转换为Android代码?

时间:2011-10-19 06:36:24

标签: php android time

我在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程序员,感谢您的帮助! :)

2 个答案:

答案 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;

}