You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中获取当前到未来指定时间的毫秒差值?

如何在Java中获取当前到未来10分钟的毫秒数并实现等待

你的代码存在几个关键问题:

  • myfuturedateasdate.setTime(LocalDateTime); 类型不匹配,setTime 接收的是 Date 对象,不能直接传入 LocalDateTime
  • myfuturedateasdate.set(Calendar.MILLISECOND, timeintervaldelay ); 这行是把毫秒位设为10,不是添加10分钟,逻辑完全错误
  • 差值计算时用了秒内毫秒数(millis)和 epoch 总毫秒数(futuredateinmilliseconds),两者维度不同,计算结果毫无意义

下面给出两种可靠实现方式:

推荐:Java 8+ 新时间API(线程安全,简洁)

用 Instant 或 LocalDateTime 处理时间,API更直观且无线程安全问题:

import java.time.Instant;
import java.time.temporal.ChronoUnit;

public class WaitDemo {
    public static void main(String[] args) throws InterruptedException {
        // 获取当前UTC时间(带时区,精度更高)
        Instant now = Instant.now();
        // 计算10分钟后的时间
        Instant futureTime = now.plus(10, ChronoUnit.MINUTES);
        
        // 直接获取毫秒差
        long millisToWait = ChronoUnit.MILLIS.between(now, futureTime);
        
        // 执行等待
        Thread.sleep(millisToWait);
        
        System.out.println("等待10分钟完成,当前时间:" + Instant.now());
    }
}

如果需要本地时间展示,也可以用 LocalDateTime,但注意它不带时区,跨时区场景建议用 Instant:

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class WaitDemo {
    public static void main(String[] args) throws InterruptedException {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime futureTime = now.plus(10, ChronoUnit.MINUTES);
        
        long millisToWait = ChronoUnit.MILLIS.between(now, futureTime);
        Thread.sleep(millisToWait);
        
        System.out.println("等待完成,当前本地时间:" + LocalDateTime.now());
    }
}

兼容Java 8之前:传统Calendar方式

如果需要兼容旧版本Java,用 Calendar 实现:

import java.util.Calendar;

public class WaitDemo {
    public static void main(String[] args) throws InterruptedException {
        Calendar now = Calendar.getInstance();
        Calendar future = Calendar.getInstance();
        // 给未来时间添加10分钟
        future.add(Calendar.MINUTE, 10);
        
        // 计算毫秒差:未来时间总毫秒 - 当前时间总毫秒
        long millisToWait = future.getTimeInMillis() - now.getTimeInMillis();
        
        Thread.sleep(millisToWait);
        System.out.println("等待完成,当前时间:" + Calendar.getInstance().getTime());
    }
}

内容的提问来源于stack exchange,提问作者Roboman Robo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:25:50