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