5

为什么此代码返回 0001-02-05?

public static String getNowDate() throws ParseException
{        
    return Myformat(toFormattedDateString(Calendar.getInstance()));
}

我将代码更改为:

public static String getNowDate() throws ParseException
{        
    Calendar temp=Calendar.getInstance();
    return temp.YEAR+"-"+temp.MONTH+"-"+temp.DAY_OF_MONTH;
}

现在它返回 1-2-5。

请帮我看看实际日期。我需要的只是 SDK 日期。

4

4 回答 4

15

Calendar.YEAR, Calendar.MONTH,Calendar.DAY_OF_MONTH是常量(只需在API 文档int中查找)...

String因此,正如@Alex 发布的那样,要从实例中创建格式化Calendar,您应该使用 SimpleDateFormat。

但是,如果您需要特定字段的数字表示,请使用以下get(int)函数:

int year = temp.get(Calendar.YEAR);
int month = temp.get(Calendar.MONTH);
int dayOfMonth = temp.get(Calendar.DAY_OF_MONTH);

警告!月份从0开始!!!因为这个,我犯了一些错误!

于 2012-10-25T18:10:26.637 回答
12

采用SimpleDateFormat

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());

您正在使用要与该Calendar.get()方法一起使用的常量。

于 2012-10-25T18:10:25.437 回答
2

为什么不使用SimpleDateFormat

public static String getNowDate() {
  return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}
于 2012-10-25T18:12:11.370 回答
0

你这样做是不对的。改成:

return temp.get(Calendar.YEAR)+"-"+ (temp.get(Calendar.MONTH)+1) +"-"+temp.get(Calendar.DAY_OF_MONTH);

此外,您可能需要查看Date

Date dt = new Date();
//this will get current date and time, guaranteed to nearest millisecond
System.out.println(dt.toString());
//you can format it as follows in your required format
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(dt));
于 2012-10-25T18:15:33.343 回答