0

好的,我想让我的程序打印出日期:1/1/2009

但这就是它打印出来的:

2009 年 1 月 1 日星期四 00:00:00 EST

从这段代码

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
public void setStart()
{
    startDate.setLenient(false);
    Date date = new Date(startDate.getTimeInMillis());
    System.out.println(date);
}

如何更改它以使其仅打印 2009 年 1 月 1 日?

4

2 回答 2

2

使用SimpleDateFormat

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
public void setStart() {
  startDate.setLenient(false); 
  DateFormat df = new SimpleDateFormat("d/M/yyyy");
  df.format(startDate.getDate());
}

您正在隐式调用toString()(正确)打印出完整内容的方法。

顺便说一句,没有必要按照您的方式构建日期。调用getDate()aCalendar返回一个Date对象。

于 2009-09-13T02:35:55.793 回答
2

当前,Date.toString()正在调用该方法以显示实例的String表示。GregorianCalendar

需要做的是创建一个DateFormat将产生String所需表示的表示。该DateFormat对象可用于Date使用该方法将实例格式化为所需的格式format

实现所需内容的最简单方法是使用SimpleDateFormat该类,该类具有一个构造函数,该构造函数采用格式字符串以所需形式输出Date

Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);
DateFormat df = new SimpleDateFormat("M/d/yyyy");
System.out.println(df.format(calendar.getTime()));

输出

1/1/2009
于 2009-09-13T02:38:36.327 回答