我有一个时间戳从外部源传递给我的应用程序2011-01-23-12.31.45格式。我需要将它与当前系统时间戳进行比较,确保其不足2分钟的差异。任何想法如何实现这一目标?Java时间戳比较
4
A
回答
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日期时操作始终是首选 - 它会:
- 有DATAFORMAT的线程安全的实现 -
DateTimeFormat
(上面的那个不是线程安全的) - 简单地做
Minutes.minutesBetween(..)
找出两个时刻之间的分钟,而不是计算。
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);
}
}
相关问题
- 1. 时间戳比较
- 2. 比较时间戳
- 3. 比较时间戳
- 4. 比较PHP时间戳(int)和java时间戳(long)
- 5. 比较java中的时间戳
- 6. 比较SQL时间戳
- 7. Javascript比较时间戳
- 8. 如何比较时间戳
- 9. PHP比较UNIX时间戳
- 10. 比较两个时间戳
- 11. PHP时间戳比较
- 12. 比较时间戳值
- 13. DB2时间戳比较
- 14. PHP比较时间戳
- 15. 比较文件时间戳
- 16. 比较mysql时间戳
- 17. 比较时间戳和实际时间
- 18. SQL查询比时间戳比较慢
- 19. 比较时间戳和实际时间(Java)
- 20. 时间戳比较删除当MySQL时间戳>20分钟
- 21. 时间戳在时间戳范围内进行比较?
- 22. 比较当前的时间戳与mysql存储的时间戳
- 23. 比较to_date(CurrentDate)与时间戳
- 24. 比较mysql中的时间戳
- 25. 在Python中比较两个时间戳
- 26. 微created_at时间戳比较它在PHP
- 27. 比较WP_Query中的时间戳
- 28. 比较时间戳到日期
- 29. 比较PHP/Javascript中的时间戳
- 30. MySQL的时间戳比较问题
小心静电'SimpleDateFormat' - 这不是线程安全的。 – Bozho 2011-03-28 21:11:48
是的,我写得很快。只是试图想出一个方法来实现这一点。我投了你的答案。几乎相同的想法,但用线程安全的乔达时间。 – blong824 2011-03-28 21:13:19