【问题标题】:Update a Localtime object from LocalTime.of() method on the java console [closed]从 Java 控制台上的 LocalTime.of() 方法更新 Localtime 对象[关闭]
【发布时间】:2020-02-26 08:37:08
【问题描述】:

如果有人可以帮助我解决这个问题,我将非常感激!

当我尝试更新从LocalTime.now() 方法创建的LocalTime 对象以便我可以看到时间流逝时,它可以工作 这是代码:

     public static void main(String[] args) {

        LocalTime d = LocalTime.now();
        String h = String.valueOf(d.getHour());
        String m = String.valueOf(d.getMinute());
        String s = String.valueOf(d.getSecond());
        System.out.print("\r"+h + ":" + m + ":" + s);

        //Update :
        Thread.sleep(1000);


     }

输出:

1:53:2 (time is passing)

但是当我运行这个时:

     public static void main(String[] args) {

        LocalTime d = LocalTime.of(12, 15, 33);
        String h = String.valueOf(d.getHour());
        String m = String.valueOf(d.getMinute());
        String s = String.valueOf(d.getSecond());
        System.out.print("\r"+h + ":" + m + ":" + s);

        //Update :
        Thread.sleep(1000);


     }

输出:

12:15:33 (time is not passing)

谁能告诉我为什么不更新?以及如何从用户输入中获得LocalTime 对象的运行时间?

非常感谢您的宝贵时间!

【问题讨论】:

  • When I try to update a LocalTime object - 没有更新代码 - 什么意思?
  • 对您的要求一无所知:您明确地创建了 12:15:33 (LocalTime.of(12, 15, 33)) 的 LocalTime 并且它给了您这个结果。这有什么问题?
  • @ScaryWombat 我的意思是更新控制台上的时间
  • 我还是不明白你的意思——请出示代码。
  • LocalTime d = LocalTime.of(12, 15, 33); 是您请求的日期 - 为什么要打印其他内容 - 这会很奇怪,不是吗。

标签: java localtime


【解决方案1】:

静态,非动态

谁能告诉我为什么不更新?

LocalTime 代表一天中的特定时间。该对象是不可变的、不变的,并且无法更新。

调用LocalTime.now() 会在执行的那一刻捕获一天中的时间。该值将在以后不会更改。要稍后获取当前时间,请再次致电LocalTime.now() 获取新对象。

要显示 LocalTime 对象的值,请调用 .toString 以生成标准 ISO 8701 值的文本。对于其他格式,请使用DateTimeFormatter。搜索以了解更多信息,因为这已经处理了很多次。

经过的时间

我怎样才能通过用户输入使用 LocalTime 对象运行时间?

也许您的意思是您想要确定自较早时刻以来经过的时间量,例如用户上次执行特定动作或手势的时间。

这样我可以看到时间流逝

对于经过的时间,您需要跟踪某个时刻而不是一天中的某个时间。 Instant 类代表 UTC 中的一个时刻。

Instant instant = Instant.now() ;  // Capture the current moment in UTC. 

使用Duration 以小时-分钟-秒为单位计算经过的时间。

Duration d = Duration.between( instant , Instant.now() ) ;

【讨论】:

  • 感谢您的回复,关于经过的时间,我并不是真的在寻找经过的时间,我正在寻找的是从用户那里获取数据(小时、分钟和秒)并显示从用户给出的时间开始在控制台内运行的时间(我不知道这是否足够清楚,我希望你明白我的意思!)。再次感谢您的宝贵时间!
  • @tanjamaro 不,不清楚。你的解释造成了更多的混乱。请重新考虑问题,并修改您的问题。下次在发帖之前练习写一个问题的草稿。
  • @tanjamaro 所以你想制作一个假想的时钟吗?这根本不是你问的。
  • @tanjamaro 这似乎准确地回答了你的问题。您想知道为什么 LocalDate 对象不会随时间变化,不是吗?
【解决方案2】:

如果您想要一个在特定时间开始更新的时钟,请尝试类似

LocalTime d = LocalTime.of(12, 15, 33);
LocalTime start = LocalTime.now();

for (int x = 0; x < 20; x++) {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    LocalTime now = LocalTime.now();
    Duration dur = Duration.between(start, now);
    start = now;
    d = d.plusSeconds(dur.getSeconds());
    System.out.println(d);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 2023-02-04
    • 2018-09-30
    • 2012-06-16
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多