【问题标题】:Which method to check if dates are the same is better?检查日期是否相同的哪种方法更好?
【发布时间】:2014-11-08 10:36:38
【问题描述】:

getTime() 方法比较日期的 Unix 时间。我不知道compareTo() 方法是如何工作的。哪个更好(更快),为什么?

Date date1 = ...
Date date2 = ...

//METHOD 1
if(date1.getTime() == date2.getTime()) {
...
}

//METHOD 2
if(date1.compareTo(date2) == 0) {
...
}

【问题讨论】:

  • 我认为在你的情况下它没有任何区别。比较两个 long 是一个足够简单的操作,几乎可以在地球上当前使用的所有 CPU 中使用。我希望 == 变体稍微快一些,因为 compareTo 还费心计算 (un|)equality (-1,0,1) 的种类。但请记住,早期优化是万恶之源。 ;-)

标签: java android date calendar


【解决方案1】:

第一种方法使用一次比较,第二种方法平均使用 3 次比较(2 次来自 compareTo,1 次来自您的代码)

让我们看看来源

public int compareTo(Date date) {
    if (milliseconds < date.milliseconds) {
        return -1;
    }
    if (milliseconds == date.milliseconds) {
        return 0;
    }
    return 1;
}

【讨论】:

    【解决方案2】:

    前提:您写道“getTime() 方法比较日期的 Unix 时间”。这是不正确的,因为该函数将时间量返回为整数。因此,您可以依赖第一种方法,这只是一个数值比较。没有比这更快的了:

    if(date1.getTime() == date2.getTime()) {
        ...
    }
    

    【讨论】:

    • 我没有写 getTime() 比较任何东西。我写了这个使用 getTime() 的方法比较了 Unix 时间。
    • 是的,你确实做到了。 “getTime() 方法比较日期的 Unix 时间”。
    • 不,我没有。我的意思是方法是一种方法,而不是 Date 类的函数。
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2010-09-06
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多