Как преобразовать этот код PHP TimeDiff в код Android? - PullRequest
0 голосов
/ 19 октября 2011

У меня есть эта функция timeDiff в PHP:

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 голосов
/ 19 октября 2011

Вы вызвали метод parse объекта parser с выводом синтаксического анализатора объекта formater.Я считаю, что это неправильно.Попробуйте это:

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;

}
0 голосов
/ 19 октября 2011

С помощью метода getTime() для объектов Date вы можете получить миллисекунды до 1 января 1970 года. Если вы хотите получить разницу между датами, вы можете рассчитать разницу в миллисекундах следующим образом:

long diffMil = endTime_d.getTime() - startTime_d.getTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...