我用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();
}
});
}
答案 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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
目前位于Joda-Time的maintenance 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中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval
,YearWeek
,YearQuarter
和more。