目标是比较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);
}
答案 0 :(得分:0)
根据您想要进行的比较,您已经拥有了所需的一切:
long currentTime = System.currentTimeMillis();
long dbTime = d.getTime();
if (dbTime < currentTime) {
// Do something
}
或者,正如Diego在评论中所建议的那样,您可以使用Date#after
和before
方法:
public boolean isInFuture(Date d) {
return d.after(new Date());
}