【问题标题】:how to get 30 min back instance object (Instance.now() -30 min)如何获取 30 分钟返回实例对象(Instance.now() -30 分钟)
【发布时间】:2018-10-03 08:57:02
【问题描述】:
private Instant submissionDate = Instant.now();


void scheduleResult() {
    if(submissionDate befor 30 min)
            execute;
}

如果 submisisionDate 超过 30 分钟,如何执行调度任务。

【问题讨论】:

标签: java datetime java-time instant


【解决方案1】:

使用Instant#minus(30, ChronoUnit.MINUTES)

Instant submissionDate = ...

Instant now = Instant.now(); 
Instant thirtyMinutesBeforeNow = now.minus(30, ChronoUnit.MINUTES);

if (submissionDate.isBefore(thirtyMinutesBeforeNow)) {

}

Instant#minusSeconds(1800)

Instant submissionDate = ...

Instant now = Instant.now(); 
Instant thirtyMinutesBeforeNow = now.minusSeconds(1800);

if (submissionDate.isBefore(thirtyMinutesBeforeNow)) {

}

【讨论】:

    【解决方案2】:

    您可以初始化过去日期的 30 分钟:

    LocalDateTime halfHourInPast = LocalDateTime.now().minusMinutes(30);
    

    并用它来比较你的日期:

    LocalDateTime submissionDate = LocalDateTime.ofInstant(submissionDateInstant, ZoneOffset.UTC);
    if(submissionDate.isBefore(halfHourInPast)){
       //schedule
    }
    

    【讨论】:

      【解决方案3】:
      if ( submissionDate.isBefore(Instant.now().minus(30, ChronoUnit.MINUTES))){
      //                      run
      }
      

      【讨论】:

      • 这是两种首选方式之一。另一个是Instant.now().minus(Duration.ofMinutes(30))。选一个你最喜欢的。
      猜你喜欢
      • 1970-01-01
      • 2015-03-06
      • 2018-07-26
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多