【问题标题】:How to customize the HH:mm format in Java [duplicate]如何在 Java 中自定义 HH:mm 格式 [重复]
【发布时间】:2021-09-20 01:20:14
【问题描述】:

我使用HH:mm 格式在java 中打印小时和分钟。它将以格式给出时间 05:1200:04。但我的要求是获得个位数的小时数:

05:12 => 5:12
00:04 => 0:04  
10:18 => 10:18

下面是我正在运行以生成日期的代码,

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class TestDateUtil {

    public static void main(String ar[]) {
        LocalTime time = LocalTime.now();
        String t = time.format(DateTimeFormatter.ofPattern("HH:mm"));
        System.out.println(t);  

    }
} 

我知道我可以使用字符串操作在 : 的基础上进行时间拆分,然后更改它,但这也需要更多我不想做的条件检查变化。有什么办法吗?

【问题讨论】:

  • 你看过javadoc,尤其是可能的模式吗?
  • 您是否要删除前导零?你看过stackoverflow.com/questions/61000127/…吗?
  • @Calculuswhiz:以故意包含前导零的方式对其进行格式化,然后删除它们,这似乎不是最好的方法......
  • H:mm 是个位数小时的格式
  • @JonSkeet 我想我并不清楚那条评论。我同意你的看法。我链接到的问题的答案可以做到这一点。我想我应该标记为重复。

标签: java java-time localtime time-format timeofday


【解决方案1】:

docsDateTimeFormatter 说:

数字:如果字母数为 1,则使用最小位数输出值且不进行填充。否则,位数将用作输出字段的宽度,必要时将值补零。以下模式字母对字母数量有限制。只能指定一个字母“c”和“F”。最多可以指定两个字母“d”、“H”、“h”、“K”、“k”、“m”和“s”。最多可以指定三个字母“D”。

因此,只需将您的模式从 HH:mm 更改为 H:mm

【讨论】:

    【解决方案2】:
    DateTimeFormatter.ofPattern("H:mm").format(LocalTime.now())
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      相关资源
      最近更新 更多