添加0但转换为int时未显示为两位数

时间:2012-08-07 16:53:22

标签: java date printing integer

我想在日期前面添加一个0,如果它是一位数。所以我做了一个代码:

public class Zero {

    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String zero="0";
        Calendar cal = new GregorianCalendar();
        int day1 = cal.get(Calendar.DAY_OF_MONTH);
        String seven1=Integer.toString(day1);
        System.out.println(""+seven1);
        System.out.println(""+day1);
        String added=zero.concat(seven1);
        System.out.println(""+added);
        int change=Integer.parseInt(added);
        System.out.println(""+change);
    }

}

因此,当我打印change时,它仅打印7而非07。实际上我想制作int 07而不是7。那么应该做些什么修改来打印07

NB - 由于没有任何问题,我没有故意提及if-else检查一位数或多位数的日期!

6 个答案:

答案 0 :(得分:5)

使用SimpleDateFormat格式化日期。

您的模式将为dd

SimpleDateFormat sdf = new SimpleDateFormat("dd");
System.out.println(sdf.format(new Date()));

答案 1 :(得分:1)

使用SimpleDateFormat

尝试此操作
System.out.println(new SimpleDateFormat("dd").format(new Date()));

答案 2 :(得分:0)

public String addZero(String input) {
    if(input.length() == 1)
        return "0" + input;
    return input;
}

该方法只会在字符串的开头添加零,如果它是1位数,所以如果你把它设为“1”,它将返回“01”,如果你把它设为“11”,它将返回“11” ”。我认为这就是你想要的。

答案 3 :(得分:0)

您是否考虑过使用SimpleDateFormat对象?这将使您可以高度控制格式。文本dd将为您提供零填充日值。

答案 4 :(得分:0)

尝试使用http://docs.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

正确的用法是

int day = Calendar.Day_OF_Month;
DecimalFormat df = new DecimalFormat("00"); 
System.out.println(df.format(day)); 

另外,不要忘记java月份从0开始:/

答案 5 :(得分:0)

快速解决方案是:

int change = Integer.parseInt(added);
if (change < 10) {
   System.out.println("0" + change);
} else {
   System.out.println(change);
}

然而,更好的解决方案是使用NumberFormat class