【问题标题】:Formatting local time in java在java中格式化本地时间
【发布时间】:2017-11-25 20:27:40
【问题描述】:

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

我找到并使用了java.util.Date的:

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

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

有什么方法可以在一行中实现相同的字符串结果? 谢谢你的帮助:)

【问题讨论】:

    标签: java string time localtime


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好答案。我通常会指定时区,例如LocalTime.now(ZoneId.systemDefault())。一,这清楚地表明获取当前时间是一个依赖于时区的操作。第二,它告诉读者和你自己,你已经考虑了语言环境的选择并做出了决定。
    • 当然应该是“……时区的选择……”。 @OleVV
    【解决方案2】:
    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 字段。这样,它只创建一次,而不是每次执行该行时。几乎可以肯定,这对这个应用程序来说并不重要,但最好从一开始就养成良好的习惯。

    【讨论】:

      【解决方案3】:

      试试这样的:

      Label timeLabel = new Label(String.format("%tR", LocalTime.now()));
      

      见:http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html

      【讨论】:

        【解决方案4】:

        您可以通过多种方式创建 LocalTime 实例。第一种方法是创建一个表示现在确切时间的 LocalTime 实例。看起来是这样的:

        LocalTime localTime = LocalTime.now();
        

        创建 LocalTime 对象的另一种方法是根据特定数量的小时、分钟、秒和纳秒来创建它。看起来是这样的:

        LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);
        

        还有其他版本的 of() 方法只需要小时和分钟,或小时、分钟和秒作为参数。

        您可以使用以下方法访问 LocalTime 对象的小时、分钟、秒和纳秒:

        • getHour()
        • getMinute()
        • getSecond()
        • getNano()

        看看这个,它对我有很大帮助-http://tutorials.jenkov.com/java-date-time/localtime.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-05
          • 1970-01-01
          • 2021-01-21
          • 1970-01-01
          相关资源
          最近更新 更多