我正在创建一个系统,其中事情在一天的不同时间发生。当前时间应该能够由用户更新(这意味着它与计算机上的系统时间无关)。所有的类和对象都应该知道当前时间是什么。当程序启动时,我希望将当前时间设置为 00:00。当用户更新当前时间时,它应该随处更新。
我该如何处理这个问题?我将 LocalTime 用于所有与时间相关的函数和变量。
我尝试创建一个“公共静态”变量 currentTime,但我只是收到错误,不同的错误取决于我将其放在程序中的位置。
“...当前时间应该能够由用户更新(意味着它与计算机上的系统时间无关)。...”
避免使用日历。
这是一个例子。
class Clock {
long a = System.currentTimeMillis(), o;
long get() {
return System.currentTimeMillis() - a + o;
}
void setOffset(long o) {
this.o = o;
}
@Override
public String toString() {
long x = get(),
s = 1000, m = s * 60, h = m * 60,
H = 0, M = 0, S = 0;
if (x >= h) {
H = x / h;
x %= h;
}
if (x >= m) {
M = x / m;
x %= m;
}
if (x >= s) S = x / s;
return "%02d:%02d:%02d".formatted(H, M, S);
}
}
并且,这是一个示例用法。
Clock c = new Clock();
System.out.println(c);
c.setOffset(12 * 60 * 60 * 1000);
Thread.sleep(1000);
System.out.println(c);
输出
00:00:00
12:00:01