以下是我的示例GUI草稿我只是想创建一个面板,其中包含今天相应的日期和日期,以更改今天日程安排的内容。
是否可以创建一个标签为Day and Date Today的面板,根据今天的日期和今天的数据更改内容?
答案 0 :(得分:1)
这是一个简单的示例JFrame
,其标签显示今天的日期:
public class FrameWithTodaysDate extends JFrame {
JLabel todayLabel = new JLabel();
public FrameWithTodaysDate() {
super("Day Demo");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTodaysDate();
add(todayLabel);
pack();
}
private void setTodaysDate() {
String today = LocalDate.now(ZoneId.of("Asia/Tokyo"))
.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
todayLabel.setText(today);
}
public static void main(String[] args) {
new FrameWithTodaysDate().setVisible(true);
}
}
今天在我的电脑上看起来像:
请填写我在亚洲/东京的所需时区。
如果您需要在新的一天开始时(午夜)更新框架中的日期,让我们使用a comment中建议的Sergiy Medvynskyy定时器。我正在重写setTodaysDate
:
private void setTodaysDate() {
ZonedDateTime now = ZonedDateTime.now(zone);
LocalDate today = now.toLocalDate();
String todayString = today.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
todayLabel.setText(todayString);
int millisUntilTomorrow = (int) ChronoUnit.MILLIS.between(now,
today.plusDays(1).atStartOfDay(zone));
Timer nextUpdate = new Timer(millisUntilTomorrow, e -> setTodaysDate());
nextUpdate.setRepeats(false);
nextUpdate.start();
}
它可能看起来有点复杂,因为我考虑夏令时(DST)等:一天可能是23或25小时,它可能不会在00:00开始。
要使用方法,我们需要
private ZoneId zone = ZoneId.of("Asia/Tokyo");
应该是它。