【问题标题】:LocalTime object - Add leading zero to the minutesLocalTime 对象 - 将前导零添加到分钟
【发布时间】:2017-01-29 13:14:19
【问题描述】:

我正在尝试像这样创建 Java 类 LocalTime 的对象:

LocalTime beginning = LocalTime.of(int hours, int minutes);

我的问题是我希望我的用户可以按以下格式输入时间:HH:MM 但是,当输入像 14:00 这样的字符串时,我将“:”替换为“”。

然后我说:

hours = Integer.parseInt(eingabe.substring(0, 2));
minutes = Integer.parseInt(eingabe.substring(2));

但是现在分钟是 0 而不是我想要的 00。 我做了一些研究,发现类似String.format("%02d", minutes),但是LocalTime.of()的参数需要是整数。

【问题讨论】:

  • 小时和分钟可以存储为int,这意味着0不是00。您只需要输出,在这种情况下,您可以使用String.format("%02d", minutes)获取输出的字符串,就像你已经研究过的那样。
  • 谢谢,我还发现 to.String() 方法可以得到我想要的输出。
  • @CWhite 不是to.String,而是.toString();
  • 对不起,我是这个意思

标签: java java-time localtime leading-zero


【解决方案1】:

如果您有14:00 之类的输入,则无需手动格式化,而是可以使用java.time.format.DateTimeFormatter:

String input = "14:00";
DateTimeFormatter simpleTime = DateTimeFormatter.ofPattern("HH:mm");
LocalTime localtime = LocalTime.parse(input, simpleTime);

但是,您最初的问题并不是问题。 “14:00”中的“00”只是格式化,不代表分钟的整数值是00:是0;它只是显示为“00”以减少人们查看时间的混淆(例如,很难区分14:1 和14:10 等)。

【讨论】:

    【解决方案2】:

    你不能得到一个带有双零的 int,因为它是一个整数值,获得双零的唯一方法是将 LocalTime 格式化为字符串。有不同的方法可以做到这一点,这取决于您使用的 Date API。看到你的类我假设你正在使用 JodaTime,所以我的例子将集中在这个 API 上,所以,要格式化你的对象,你可以这样做:

    public static String toTimeString(LocalTime source) {
    
        try {
            return source.toString("HH.mm");
        } catch (Exception ignored) {
        }
    
        return null;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2011-11-03
      • 2011-02-03
      • 2012-02-13
      相关资源
      最近更新 更多