如何将程序重置为今天(Java)

时间:2019-02-07 23:17:57

标签: java date reset

我用Java(Eclipse)编写了一个程序。该程序获得的预期日期距离今天还有多远。我没有关闭该程序(昨天),该程序使用的是yesterday's date而不是今天的按钮。

有没有办法在不打开和关闭程序的情况下将其识别为今天?

private void dispose() {
    new SimpleCalendarOPD();
    calendar.setTime(today);
    ....

    JButton btnReset = new JButton("Reset");
    btnReset.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            txtDisplay.setText(null);
            txtDate.setText(null);
            dispose();

        }
    });
}

2 个答案:

答案 0 :(得分:2)

您似乎没有适当更新。建议您每次点击重置时都使用java.time.LocalTime.now()

btnReset.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        txtDisplay.setText(null);
        txtDate.setText(null);
        // this is an example. Use appropriately in your code
        setTime(java.time.LocalTime.now());
    }});

即使您正确地获得了时间(我们不知道,因为您没有给我们看),这也意味着您没有将其添加到显示器中。我的另一建议是将时间显示在控制台上,以便您可以在代码中指出错误。

private void dispose() {
    new SimpleCalendarOPD();
    calendar.setTime(today);
    //If time is correct, you know that you update the display wrong.
    System.out.println(today);
}

答案 1 :(得分:2)

您的问题不清楚。也许您只想要当前日期。

当前日期

如果您要求提供当前日期,请致电LocalDate.now。传递您要查看日期的时区。请记住,在任何给定的时刻,日期都会在全球范围内变化。可能是明天在日本,而昨天仍在加拿大。

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;

稍后您想知道当前日期时,再次调用LocalDate.now以获取另一个新的LocalDate对象。不要看前一个LocalDate,因为它是不可变的,不变的并且不是最新的。

如果您想知道当前时刻是同一天还是第二天,请进行比较。

boolean isNewDay = previousLocalDate.isBefore( LocalDate.now( z ) ) ;

关于 java.time

java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendarSimpleDateFormat

目前位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore