LocalTime对象 - 将前导零添加到分钟

时间:2017-01-29 13:14:20

标签: java java-time localtime leading-zero

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

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

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

然后我说:

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

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

2 个答案:

答案 0 :(得分:2)

如果您有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:114:10等。)

答案 1 :(得分:0)

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

public static String toTimeString(LocalTime source) {

    try {
        return source.toString("HH.mm");
    } catch (Exception ignored) {
    }

    return null;
}