【问题标题】:0 is added but not shown as two digit when converted to int添加 0 但转换为 int 时不显示为两位数
【发布时间】:2012-08-07 16:53:21
【问题描述】:

如果日期是个位数,我想在日期前添加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。其实我想做int07而不是7。那么打印07需要做哪些修改呢?

注意- 我没有提到 if-else 故意检查一位数或多位日期,因为它没有问题!

【问题讨论】:

  • 不要重新发明轮子。查看有关SimpleDateFormat 的答案。

标签: java date printing integer


【解决方案1】:

使用SimpleDateFormat 格式化日期。

您的模式将是dd

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

【讨论】:

    【解决方案2】:

    使用SimpleDateFormat试试这个

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

    【讨论】:

      【解决方案3】:
      public String addZero(String input) {
          if(input.length() == 1)
              return "0" + input;
          return input;
      }
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          一个快速的解决方案是:

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

          但是更好的解决方案是使用NumberFormat class

          【讨论】:

          • 我不想只打印。我想将int 设为07
          【解决方案6】:

          尝试使用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 开始:/

          【讨论】:

            猜你喜欢
            • 2013-06-24
            • 2016-09-06
            • 2014-08-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            • 2018-12-21
            • 2021-04-10
            相关资源
            最近更新 更多