Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查日期中的变量是否比当前日期早10秒以上_Java_Date_Time_Calendar - Fatal编程技术网

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

Java 如何检查日期中的变量是否比当前日期早10秒以上,java,date,time,calendar,Java,Date,Time,Calendar,我有一些从internet下载数据的方法(我们称之为updater),由于其他一些方法使用这个updater(),我不想让服务器因查询而过度拥挤 我是这样做的:一个私有变量是updater()的结果,另一个私有变量是lastUpdate(Datetype),它告诉我(使用Calendar类)上次查询的时间 现在,当查询在最后10秒内完成时,我只想返回旧的结果 问题是:从实际日期和上次更新经过10秒后,我不知道如何获取信息。在Date类中,只有在(日期d)之后、在(日期d)之前或等于(对象o)的方

我有一些从internet下载数据的方法(我们称之为updater),由于其他一些方法使用这个
updater()
,我不想让服务器因查询而过度拥挤

我是这样做的:一个私有变量是
updater()
的结果,另一个私有变量是
lastUpdate
Date
type),它告诉我(使用
Calendar
类)上次查询的时间

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

问题是:从
实际日期
上次更新
经过10秒后,我不知道如何获取信息。在
Date
类中,只有
在(日期d)
之后、
在(日期d)
之前或
等于(对象o)
的方法


有人能帮我吗?

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

if (actualDate.getTime()-lastUpdate.getTime() >10000) {
  // more than 10 seconds have passed
}

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

if (actualDate.getTime()-lastUpdate.getTime() >10000) {
  // more than 10 seconds have passed
}
这给出了自1970年1月以来以毫秒为单位的历元时间。您可以将日期转换为以千秒为单位的时间,并比较差异以检查其是否早于10秒


这给出了自1970年1月以来以毫秒为单位的历元时间。您可以将日期转换为以千秒为单位的时间,并比较差异以检查其是否早于10秒。

我建议您删除日期,因为大部分日期都已弃用。使用
日历
(或类似的外部库)作为日期功能

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

样本可以是这样的:

private long lastTime = 0;

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

我建议您删除日期,因为大部分内容都已弃用。使用
日历
(或类似的外部库)作为日期功能

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

样本可以是这样的:

private long lastTime = 0;

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

其他答案是正确的

但是您应该学会使用Java 8中的新JSR 310 Java.time.*类。旧的java.util.Date/Calendar类是出了名的糟糕

下面是Joda Time 2.3中的一些示例代码,可以帮助您继续

/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
//导入org.joda.time.*;
//导入org.joda.time.format.*;
DateTime lastChecked=新日期时间();
// …
试一试{
System.out.println(“Sleeping.lastChecked:+lastChecked”);
Thread.sleep(12*1000);//毫秒。
}捕捉(中断异常e){
e、 printStackTrace();
}
if(DateTime.now().isAfter(lastChecked.plusSeconds(10))){
//更新
System.out.println(“更新”);
}否则{
//等等。
System.out.println(“等待”);
}
资源:

  • 打开静态方法,替代
    new DateTime()

    • 其他答案都是正确的

      但是您应该学会使用Java 8中的新JSR 310 Java.time.*类。旧的java.util.Date/Calendar类是出了名的糟糕

      下面是Joda Time 2.3中的一些示例代码,可以帮助您继续

      /©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
      //导入org.joda.time.*;
      //导入org.joda.time.format.*;
      DateTime lastChecked=新日期时间();
      // …
      试一试{
      System.out.println(“Sleeping.lastChecked:+lastChecked”);
      Thread.sleep(12*1000);//毫秒。
      }捕捉(中断异常e){
      e、 printStackTrace();
      }
      if(DateTime.now().isAfter(lastChecked.plusSeconds(10))){
      //更新
      System.out.println(“更新”);
      }否则{
      //等等。
      System.out.println(“等待”);
      }
      
      资源:

      • 打开静态方法,替代
        new DateTime()

      谢谢!我喜欢这个解决方案。:)非常感谢。我喜欢这个解决方案。:)