在java中格式化本地时间

Dan*_*orz 9 java string time localtime

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

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

Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date()));
Run Code Online (Sandbox Code Playgroud)

但它显示错误的时区,所以我将使用java.timeLocalTime上课.

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

Man*_*dis 23

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

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");
Run Code Online (Sandbox Code Playgroud)

然后获取当前时间并格式化它:

Label timeLabel = new Label(LocalTime.now().format(dtf));
Run Code Online (Sandbox Code Playgroud)

  • 好答案.我通常会指定时区,例如`LocalTime.now(ZoneId.systemDefault())`.一,这清楚地表明获得当前时间是依赖于时区的操作.二,它告诉读者和你自己,你已经考虑过现场的选择并作出了决定. (4认同)

Ale*_*nov 7

LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"))
Run Code Online (Sandbox Code Playgroud)

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

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