使用LocalTime设置Java中整个应用程序看到的当前时间[关闭]

问题描述 投票:0回答:1

我正在创建一个系统,其中事情在一天的不同时间发生。当前时间应该能够由用户更新(这意味着它与计算机上的系统时间无关)。所有的类和对象都应该知道当前时间是什么。当程序启动时,我希望将当前时间设置为 00:00。当用户更新当前时间时,它应该随处更新。

我该如何处理这个问题?我将 LocalTime 用于所有与时间相关的函数和变量。

我尝试创建一个“公共静态”变量 currentTime,但我只是收到错误,不同的错误取决于我将其放在程序中的位置。

java localtime
1个回答
0
投票

“...当前时间应该能够由用户更新(意味着它与计算机上的系统时间无关)。...”

避免使用日历。

这是一个例子。

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
© www.soinside.com 2019 - 2024. All rights reserved.