比较2(epoch)次,如果一个更新,那么另一个

时间:2014-12-29 15:41:31

标签: android date epoch

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

比较两个(纪元)时间之前最简单的方法是什么?转换为字符串?我已经在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);
}

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

1 个答案:

答案 0 :(得分:0)

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

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

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

或者,正如Diego在评论中所建议的那样,您可以使用Date#afterbefore方法:

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