以两位数格式显示日期 - java

时间:2015-10-13 02:06:37

标签: java

相反,例如“9/1/1996”我希望我的代码显示“09/01/1996”。我不知道如何更具体地描述我的问题。这是我的MyDate类的代码:

public class MyDate {

    private int year;
    private int month;
    private int day;

    public MyDate(int y, int m, int d){
        year = y;
        month = m;
        day = d;

        System.out.printf("I'm born at: %s\n", this);
    }

    public  String toString(){
        return String.format("%d/%d/%d", year, month,  day);
    }
  }

这是我的主要方法:

public class MyDateTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        MyDate birthday = new MyDate(31,12,1995);
    }

}

p.s我知道导入日历有一种方法,但我宁愿这样做。

5 个答案:

答案 0 :(得分:3)

根据您的问题,您似乎使用自定义类来表示日期。但您可以使用内置java.util.Date类来表示或比较任何类型的日期。因此,您可以使用DateFormat显示格式化的日期时间。请考虑以下示例。

    Date date = //code to get your date

    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    System.out.println(dateFormat.format(date));

<强>输出:

13/10/2015

此外,您还应指定DateFormat的模式。使用下表来表示日期格式字符。

enter image description here

如果您仍然需要使用魔法MyDate

您可以使用前导零指定的System.out.printf,如下所示。

System.out.printf("%02d/%02d/%04d", date, month, year);

答案 1 :(得分:1)

id | user_id | created_datetime
1  | 34      | '2015-09-10'
2  | 34      | '2015-10-11'
3  | 34      | '2015-05-23'
4  | 34      | '2015-09-13'
5  | 159     | '2015-10-01'
6  | 159     | '2015-10-02'
7  | 159     | '2015-10-03'
8  | 159     | '2015-10-06'

字符串格式化输出。

答案 2 :(得分:1)

使用

时,您还应导入此import java.text.SimpleDateFormat; import java.text.DateFormat;
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    System.out.println(dateFormat.format(date)); 

答案 3 :(得分:1)

您可以将String.format的格式字符串更改为使用前导零填充:

return String.format("%d/%02d/%02d", year, month,  day);
  • 0表示使用前导零填充输出
  • 2表示输出应为2个字符宽(日和月)
  • year不需要修饰符,因为它总是4位数(至少在接下来的8千年里)

ideone example

答案 4 :(得分:1)

这是一个数字格式问题。在&#39; d之前在%d中,您可以设置数字字段的长度,如果您想要前导零而不是前导空格,那么您可以添加&#39; 0&#39; 0在那之前。因此,带有前导零的2位数字段为%02d

所以你的代码变成了:

public String toString() {
    return String.format("%04d/%02d/%02d", year, month, day);
}