java程序每秒递减怎么设置

时间:2025-01-26 23:29:42 单机游戏

在Java中,可以使用`java.util.Timer`和`java.util.TimerTask`类来实现每秒递减的功能。以下是一个简单的示例代码:

```java

import java.util.Timer;

import java.util.TimerTask;

public class Countdown {

public static void main(String[] args) {

// 设置倒计时结束时间,例如2025-12-31 23:59:59

String endTime = "2025-12-31 23:59:59";

long endTimeMillis = convertStringToMillis(endTime);

// 创建一个Timer实例

Timer timer = new Timer();

// 创建一个继承自TimerTask的类,用于定义每秒执行的任务

TimerTask task = new TimerTask() {

private long remainingTime;

@Override

public void run() {

if (remainingTime > 0) {

remainingTime--;

System.out.println("剩余时间: " + formatTime(remainingTime));

} else {

System.out.println("倒计时结束!");

timer.cancel(); // 停止计时器

}

}

};

// 获取当前时间

long currentTimeMillis = System.currentTimeMillis();

// 计算倒计时开始时间

long startTimeMillis = currentTimeMillis - (endTimeMillis - System.currentTimeMillis());

// 将开始时间设置到计时器中,并安排任务每秒执行一次

timer.scheduleAtFixedRate(task, startTimeMillis, 1000);

}

// 将时间字符串转换为毫秒

private static long convertStringToMillis(String timeStr) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try {

Date date = sdf.parse(timeStr);

return date.getTime();

} catch (Exception e) {

e.printStackTrace();

return -1;

}

}

// 将毫秒时间格式化为时间字符串

private static String formatTime(long millis) {

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

return sdf.format(new Date(millis));

}

}

```

代码说明:

设置倒计时结束时间:

定义一个字符串表示倒计时结束时间,例如`"2025-12-31 23:59:59"`。

转换时间字符串为毫秒:

使用`SimpleDateFormat`将时间字符串转换为毫秒时间戳。

创建Timer实例:

创建一个`Timer`实例用于执行定时任务。

创建TimerTask子类:

定义一个继承自`TimerTask`的类,用于定义每秒执行的任务。在`run`方法中,递减剩余时间并输出。

计算开始时间:

计算倒计时开始时间,即当前时间减去倒计时结束时间到当前时间的差值。

安排任务:

将任务安排到计时器中,并设置为每秒执行一次。

通过这种方式,你可以实现一个简单的每秒递减的倒计时功能。