用java格式化本地时间
我正在创建JavaFX应用程序,每次创建新的列表单元格时,我都需要使用时间标签。我需要将当前时间为用java格式化本地时间,java,string,time,localtime,Java,String,Time,Localtime,我正在创建JavaFX应用程序,每次创建新的列表单元格时,我都需要使用时间标签。我需要将当前时间为HH:MM格式的字符串直接放入标签构造函数,该构造函数将string作为参数 我找到并使用了java.util.Date: Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date())); 但是它显示了错误的时区,所以我将使用java.time和LocalTime类 有没有办法在一行中获得相同的字符串结果?
HH:MM
格式的字符串直接放入标签构造函数,该构造函数将string
作为参数
我找到并使用了java.util.Date
:
Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date()));
但是它显示了错误的时区,所以我将使用java.time
和LocalTime
类
有没有办法在一行中获得相同的字符串结果?
谢谢你的帮助:)试试这样的方法:
Label timeLabel = new Label(String.format("%tR", LocalTime.now()));
见:
(这将使用默认区域设置,有关详细信息,请参阅)
但更好的做法是将格式化程序放入
静态final
字段。这样,它只创建一次,而不是每次执行该行时。几乎可以肯定,这对这个应用程序来说并不重要,但最好从一开始就使用好习惯。在新的应用程序中使用Java8类型(Java.time)可能更好。您可以首先创建一个:
然后获取当前时间并将其格式化:
Label timeLabel = new Label(LocalTime.now().format(dtf));
可以通过多种方式创建LocalTime实例。第一种方法是创建一个LocalTime实例,该实例表示当前的确切时间。这看起来是这样的:
LocalTime localTime = LocalTime.now();
LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);
创建LocalTime对象的另一种方法是从特定的小时、分钟、秒和纳秒数创建它。这看起来是这样的:
LocalTime localTime = LocalTime.now();
LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);
还有其他版本的of()方法,它只需要小时和分钟,或小时、分钟和秒作为参数
您可以使用以下方法访问LocalTime对象的小时、分钟、秒和纳秒:
- getHour()
- getMinute()
- getSecond()
- getNano()
看看这个,它帮了我很多-好答案。我通常会指定时区,例如
LocalTime.now(ZoneId.systemDefault())
。第一,这清楚地表明获取当前时间是一个依赖于时区的操作。第二,它告诉读者和你自己,你已经考虑过了地点的选择并做出了决定。当然,这应该是“……时区的选择……”@奥列夫