在java中格式化本地时间

新手上路,请多包涵

我正在创建我的 JavaFX 应用程序,每次创建新的列表单元格时我都需要使用时间标签。我需要将带有当前时间的字符串以 HH:MM 格式直接放入以 String 作为参数的 Label 构造函数中。

我发现并使用 java.util.Date 的:

 Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date()));

但它显示了错误的时区,所以我将使用 java.timeLocalTime 类。

有没有办法在一行中实现相同的字符串结果?谢谢您的帮助 :)

原文由 Daniel Piskorz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

在新应用程序中使用 Java 8 类型 (java.time) 可能更好。您可以先创建一个 DateTimeFormatter

 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");

然后获取当前时间并对其进行格式化:

 Label timeLabel = new Label(LocalTime.now().format(dtf));

原文由 Manos Nikolaidis 发布,翻译遵循 CC BY-SA 4.0 许可协议

LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"))

(这将使用默认语言环境,有关更多信息,请参阅 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ofPattern-java.lang.String- )。

但更好的做法是将格式化程序放入 static final 字段。这样它只创建一次而不是每次执行该行时。对于这个应用程序来说,这几乎肯定并不重要,但最好从一开始就养成良好的习惯。

原文由 Alexey Romanov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题