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

发布于 2024-12-10 20:02:51 字数 1253 浏览 0 评论 0原文

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

I have this timeDiff function in PHP:

PHP Code:

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;
}

now I want to use the above functionality in android, so I coded like this:

Android Code:

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;
}

But logcat says java.lang.IllegalArgumentException.

I'm a beginner android programmer thanks for any help! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

因为看清所以看轻 2024-12-17 20:02:51

使用 Date 对象getTime() 方法> 您可以获得 1970 年 1 月 1 日之前的毫秒数。如果您想要日期之间的差异,您可以按如下方式计算以毫秒为单位的差异:

long diffMil = endTime_d.getTime() - startTime_d.getTime();

With the getTime() method of Date objects you can get the milliseconds till January 1st, 1970. If you want the difference between to dates you can calculate the difference in milliseconds as follows:

long diffMil = endTime_d.getTime() - startTime_d.getTime();
小草泠泠 2024-12-17 20:02:51

您使用格式化程序对象的解析器的输出调用了解析器对象的解析方法。我相信这是不正确的。试试这个:

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;

}

You called the parse method of the parser object with the output of the parser of the formater object. I believe this is incorrect. Try this:

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;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文