我有一个时间戳以2011-01-23-12.31.45格式从外部源传递到我的应用程序。我需要将它与当前系统时间戳进行比较,确保其差异小于2分钟。关于如何实现这一目标的任何想法?
答案 0 :(得分:5)
这是约会,而不是时间戳。您可以使用java.text.SimpleDateFormat
格式使用yyyy-dd-MM-HH.mm.ss
对其进行解析:
SimpleDateFormat sdf = new SimpleDateFormat("yyy-dd-MM-HH.mm.ss");
Date date = sdf.parse(inputDateString);
long timestamp = date.getTime();
然后比较 - 一分钟有60 * 1000毫安。
始终首选使用joda-time进行日期时间操作 - 它将:
DateTimeFormat
(上面的那个不是线程安全的)Minutes.minutesBetween(..)
找出两个时刻之间的分钟数,而不是计算。答案 1 :(得分:0)
这可以优化,但这是我提出的。它需要一些工作,但它应该让你开始。
public class Test {
private final String serverValue = "2011-01-23-12.31.45"; //Old should fail
private final String serverValueNew = "2011-03-28-14.02.00"; //New
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
public boolean plusMinusTwoMins(String serverValue) {
boolean withinRange = false;
Date now = Calendar.getInstance().getTime();
Date serverDate = now;
try {
serverDate = dateFormat.parse(serverValue);
} catch (ParseException e) {
e.printStackTrace();
}
long millis = Math.abs(now.getTime() - serverDate.getTime());
System.out.println("Millis: " + millis);
//1000ms * 60s * 2m
if (millis <= (1000 * 60 * 2)) {
withinRange = true;
}
return withinRange;
}
public static void main(String[] args) {
Test test = new Test();
boolean value = test.plusMinusTwoMins(test.serverValue);
System.out.println("Value: " + value);
boolean value2 = test.plusMinusTwoMins(test.serverValueNew);
System.out.println("Value2: " + value2);
}
}