比较 2(纪元)次,如果一个比另一个更新

Posted

技术标签:

【中文标题】比较 2(纪元)次,如果一个比另一个更新【英文标题】:Compare 2 (epoch) times, if one is newer then the other do 【发布时间】:2015-02-25 19:31:04 【问题描述】:

目标是比较 2 次,1 次来自 android 设备,另一次来自数据库服务器(在 epoch 中),http://www.epochconverter.com/ 如果一个时间比另一个时间新,则应添加一个值(在列表视图中标记为新,newItem = true;)。 提供的时间已经使用 (simpledateformat) 转换为字符串输出(今天、一个月中的某天、昨天)。

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

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


public static String formatDate(final long dt) 
    return formatDate(new Date(dt));


public static String formatDate(final Date date) 
    final DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT,
            DateFormat.SHORT);
    return df.format(date);

【问题讨论】:

你试过 Date 类中的after 方法吗?类似new Date().after(db time)... 嗨 Diego,Thx,还没有,我首先要确保 im catching the correct data, as everything is comming from SQL db and im 没有进入 SQL,但我认为我在正确的轨道上。 【参考方案1】:

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

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

if (dbTime < currentTime) 
    // Do something

或者,按照 Diego 在 cmets 中的建议,您可以使用 Date#afterbefore 方法:

public boolean isInFuture(Date d) 
    return d.after(new Date());

【讨论】:

嗨亚当,这确实是一个解决方案。您认为这可以将其保留在 GetDateString 函数中吗?我更多地考虑单独的功能。如前所述,im looking for feedback for the right approach. The values 来自 SQL 数据库库,不幸的是我不使用 SQL。 你知道,我想我没有阅读其余的方法。将其放入单独的方法中会起作用,但这取决于您。您所做的只是比较两个long 值。我会用你可以使用的方法更新答案。 嗨,亚当。不错,看着不错我会在我在家的时候尝试,仍然是@work。再次感谢我让您知道的努力。 嗨,亚当,不幸的是不起作用,我将 currentTime 和 dbTime 声明为 private long。然后将您提到的代码插入 GetDateString, Log.d("CURRENT TIME: ", String.valueOf(currentTime)); Log.d("DBTIME:", String.valueOf(dbTime));给两个 0 如果它们都是 0,那么你从来没有给它们赋值。

以上是关于比较 2(纪元)次,如果一个比另一个更新的主要内容,如果未能解决你的问题,请参考以下文章

比较两个文件中,一个文件比另一个文件多的行

如何在 SQL Server 中将纪元时间与 24 小时前进行比较?

如果条件较旧,纪元日期

如何将 Unix 纪元时间戳与 SQL 中的 DATE 进行比较?

为啥一个循环比另一个循环检测共享内存更新需要更长的时间?

keras.models.Model.fit 中的“时代”是啥?