如何在JAVA中将整数转换为24小时格式?

时间:2016-05-03 15:40:39

标签: java

我不知道如何在JAVA中将整数转换为24小时格式。

例如:

public class Activity 
{
   private Subject subject;
   private int start;
   private int duration;
   private String room;
   private int capacity;
   private int enrolled;


public Activity(Subject subject, int start, int duration, String room, int capacity)
{
    this.subject = subject;
    this.start = start;
    this.duration = duration;
    this.room = room;
    this.capacity = capacity;
}

@Override
public String toString() 
{
    return subject.getNumber() + " " + start + " " + duration + "hrs" + " " + enrolled + "/" + capacity;
}
}

在toString()方法中,我想将int可变启动转换为格式为HH:00。 start变量是0到18之间的整数。 我尝试添加这样的方法:

public String formatted(int n)
{
    int H1 = n / 10;
    int H2 = n % 10;
    return H1 + H2 + ":00";
}

然后将变量start传递给此方法。但它不起作用。我不明白哪里出了问题。

我需要一些帮助!

PS:结果应该看起来像“48024 18:00 1hrs 0/200”,除了起始变量之外,我得到所有其他正确格式化的变量。

4 个答案:

答案 0 :(得分:5)

您的方法失败,因为您的代码等同于:

return (H1 + H2) + ":00";

所以它在追加字符串之前总结每个数字!

你可以"纠正" (或实际上是黑客行为):

return H1 + (H2 + ":00");

甚至更好,请使用String.format

public String formatted(int n) {
    // print "n" with 2 digits and append ":00"
    return String.format("%02d:00", n);  
}

答案 1 :(得分:2)

您需要在添加中转换为字符串,否则只需添加数字

   public String formatted(int n)
    {
        int H1 = n / 10;
        int H2 = n % 10;
        return H1 + "" + H2 + ":00";
    }

答案 2 :(得分:0)

你可以这样做:

public String formatted(int n)
{
    String hours = "";
    if(n < 10)
    {
        hours = "0" + n;
    }
    else
    {
        hours = "" + n;
    }
    return hours + ":00";
}

答案 3 :(得分:0)

简单的解决方案:return "" + H1 + H2 + ":00";会这样做。

Java只是从左到右处理这一行。 因此,如果它首先遇到两个整数,它会将它们相加。

但是,如果你开始放String(即使它是空的),行为将会得到纠正。

还有其他更易读的替代方案:

return String.valueOf(H1) + H2 + ":00";

还有许多实用工具类可以帮助您SimpleDateFormatDuration感兴趣。但在你的情况下保持简单。 :)