【发布时间】:2021-11-21 07:18:12
【问题描述】:
我很难进行倒计时,直到一天结束 (23:59)。
我有一个返回剩余时间的方法,它返回如下内容:“5h 10m 1s”,这很好,问题是我希望它返回剩余的时间,直到 23:59 .
当我想计算到一天结束的时间时,我在完成操作时以毫秒为单位保存。
我有这样的事情:
public String getCountdown(UUID uuid, Quest quest) {
String countdownTimePlaceholder = "";
long questCompletedTimeMillis = plugin.getDatabaseManager().getQuestCompletedMillis(uuid, quest);
long currentTimeMillis = System.currentTimeMillis();
int hour = new Date().getHours();
int minutes = new Date().getMinutes();
int second = new Date().getSeconds();
long seconds = ((24*60*60) - ((hour*60*60) + (minutes*60) + second));
long seconds2 = seconds * 1000L;
long waitingTime = currentTimeMillis - questCompletedTimeMillis;
long waitingTimeDiv = waitingTime / 1000L;
long waitingTimeSeconds = seconds - waitingTimeDiv, waitingTimeMinutes = waitingTimeSeconds / 60L, waitingTimeHours = waitingTimeMinutes / 60L;
if (questCompletedTimeMillis + seconds2 > currentTimeMillis && questCompletedTimeMillis != 0L) {
if (waitingTimeSeconds > 59L) waitingTimeSeconds -= 60L * waitingTimeMinutes;
if (waitingTimeSeconds != 0L) countdownTimePlaceholder = waitingTimeSeconds + "s";
if (waitingTimeMinutes > 59L) waitingTimeMinutes -= 60L * waitingTimeHours;
if (waitingTimeMinutes > 0L) countdownTimePlaceholder = waitingTimeMinutes + "m " + countdownTimePlaceholder;
if (waitingTimeHours > 0L) countdownTimePlaceholder = waitingTimeHours + "h " + countdownTimePlaceholder;
return countdownTimePlaceholder;
}
return "-1";
}
【问题讨论】:
-
@user16320675 不,23:59 不是一天的结束。从那一天到新的一天还有整整一分钟。不要以一天结束为目标。时间跨度最好通过半开放方法定义,其中开始是包含,而结束是独占。所以一天会持续到但不包括下一个天的开始。