为什么此代码会返回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日期。
答案 0 :(得分:15)
Calendar.YEAR
,Calendar.MONTH
,Calendar.DAY_OF_MONTH
是int
个常量(只需查看API doc)...
因此,正如@Alex发布的那样,要从String
实例创建格式化的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开始!!!因为这个我犯了一些错误!
答案 1 :(得分:12)
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
您正在使用常量与Calendar.get()
方法一起使用。
答案 2 :(得分:2)
为什么不使用SimpleDateFormat
?
public static String getNowDate() {
return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}
答案 3 :(得分: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));