比较 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 i
m 没有进入 SQL,但我认为我在正确的轨道上。
【参考方案1】:
根据您要进行的比较,您已经拥有所需的一切:
long currentTime = System.currentTimeMillis();
long dbTime = d.getTime();
if (dbTime < currentTime)
// Do something
或者,按照 Diego 在 cmets 中的建议,您可以使用 Date#after
和 before
方法:
public boolean isInFuture(Date d)
return d.after(new Date());
【讨论】:
嗨亚当,这确实是一个解决方案。您认为这可以将其保留在 GetDateString 函数中吗?我更多地考虑单独的功能。如前所述,im looking for feedback for the right approach. The value
s 来自 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 小时前进行比较?