首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查日期中的变量是否比当前日期早10秒

如何检查日期中的变量是否比当前日期早10秒
EN

Stack Overflow用户
提问于 2013-12-12 17:07:17
回答 4查看 2.2K关注 0票数 0

我有一些从互联网下载数据的方法(让我们称之为更新器),而且由于其他几种不同的方法使用这个updater(),我不想让服务器上充斥着查询。

我是这样做的:updater()结果的私有变量和lastUpdate的私有变量(Date类型)告诉我(使用Calendar类)上次查询何时举行。

现在,当查询在最后10秒时,我只想返回旧的结果。

问题是:我不知道如何从actualDatelastUpdate获得10秒的信息。在Date类中,只有after(Date d)before(Date d)equals(Object o)的方法。

有人能帮我吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-12 17:13:23

我建议您放弃Date,因为其中大多数都是不推荐的。相反,使用Calendar (或者像尤达-时间这样的外部库)来实现日期功能。

另一种可能是只使用当前的日期+时间(毫秒)。它非常容易使用,您可以使用setTimeInMillis()轻松地将其转换为setTimeInMillis()

样本可以是这样的:

代码语言:javascript
复制
private long lastTime = 0;

if(System.currentTimeMillis() >= lastTime + 10000) {
    // Perform action
    lastTime = System.currentTimeMillis();
}
票数 3
EN

Stack Overflow用户

发布于 2013-12-12 17:12:02

确保当前日期是第一个选项。.getTime()方法返回以毫秒为单位的时间,因此比较它们,10秒的值大于10000

代码语言:javascript
复制
if (actualDate.getTime()-lastUpdate.getTime() >10000) {
  // more than 10 seconds have passed
}
票数 1
EN

Stack Overflow用户

发布于 2013-12-12 17:58:23

其他答案是正确的。

但是您应该学会使用尤达-时间,或者在Java8中学习新的JSR310java.time.*类。旧的java.util.Date/Calendar类非常糟糕。

以下是Joda-Time2.3中的一些示例代码,可以让您开始工作。

代码语言:javascript
复制
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTime lastChecked = new DateTime();

// …
try {
    System.out.println( "Sleeping. lastChecked: " + lastChecked );
    Thread.sleep( 12 * 1000 );  // Milliseconds.
} catch ( InterruptedException e ) {
    e.printStackTrace();
}

if ( DateTime.now().isAfter( lastChecked.plusSeconds( 10 ) )) {
    // Update
    System.out.println( "Updating." );
} else {
    // Wait.
    System.out.println( "Waiting." );
}

资源:

  • 用睡眠暂停执行
  • 静态方法now() on DateTime,替代new DateTime()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20549697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档