Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 比较2(历元)次,如果一次较新,则另一次较新_Android_Date_Epoch - Fatal编程技术网

Android 比较2(历元)次,如果一次较新,则另一次较新

Android 比较2(历元)次,如果一次较新,则另一次较新,android,date,epoch,Android,Date,Epoch,目标是比较两次,一次来自android设备,另一次来自数据库服务器(在epoch中), 如果一个时间比另一个时间新,则应添加一个值(在listview中标记为new,newItem=true;)。 已使用(SimpleDataFormat)将提供的时间转换为字符串输出(今天、月日、昨天) 在转换为字符串之前比较两个(历元)时间的最简单方法是什么?我已经在stackoverflow上搜索了一些,但是我不确定哪一个最适合我的目标,最快 private String getDateString(fin

目标是比较两次,一次来自android设备,另一次来自数据库服务器(在epoch中), 如果一个时间比另一个时间新,则应添加一个值(在listview中标记为new,newItem=true;)。 已使用(SimpleDataFormat)将提供的时间转换为字符串输出(今天、月日、昨天)

在转换为字符串之前比较两个(历元)时间的最简单方法是什么?我已经在stackoverflow上搜索了一些,但是我不确定哪一个最适合我的目标,最快

private String getDateString(final Date d) {
    if (d == null)
        return "";

    int[] elements1, elements2;

    elements1 = getDateElements(System.currentTimeMillis()); <-- current time
    elements2 = getDateElements(d.getTime()); <-- db time

    if (elements1[0] == elements2[0] && elements1[1] == elements2[1]) {
        if (elements1[2] == elements2[2])
            return "Today";

        final Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());
        c.add(Calendar.DAY_OF_MONTH, -1);
        elements1 = getDateElements(c.getTimeInMillis());

        if (elements1[2] == elements2[2])
            return "Yesterday";

    }
    return Util.formatDate(d);
}

根据您想要进行的比较,您已经拥有了所需的一切:

long currentTime = System.currentTimeMillis();
long dbTime = d.getTime();

if (dbTime < currentTime) {
    // Do something
}

您在Date类中尝试过
after
方法吗?类似于
new Date()。在(db time)
之后…嗨,迭戈,Thx,还没有,我首先要确保我
m捕捉到了正确的数据,因为一切都来自SQL db,我
m没有进入SQL,但我认为我走上了正确的轨道。嗨,亚当,这确实是一个解决方案。您认为这样可以将其保存在GetDateString函数中吗?我更多的是在一个单独的功能上思考。如前所述,我正在寻找正确方法的反馈。值
s来自SQL数据库,不幸的是,我不喜欢SQL。你知道,我想我没有读过该方法的其余部分。把它放在一个单独的方法中是可行的,但这取决于你。您所做的只是比较两个
long
值。我会用你能用的方法更新答案。嗨,亚当。很好,看起来不错。当我在家的时候,我会努力的,仍然在工作。再次感谢我的努力,我会让你知道的。嗨,亚当,不幸的是不起作用,我宣布currentTime和dbTime为private long。然后将您提到的代码插入GetDateString,Log.d(“当前时间:”,String.valueOf(currentTime));Log.d(“DBTIME:,String.valueOf(DBTIME));都为0如果它们都为0,则您从未为它们赋值。
long currentTime = System.currentTimeMillis();
long dbTime = d.getTime();

if (dbTime < currentTime) {
    // Do something
}
public boolean isInFuture(Date d) {
    return d.after(new Date());
}