我正在尝试使用c.add(Calendar.DATE,1)
更改按钮点击的日期。它应该将当天增加1.问题是当月份改变时,日期增加到32而不是预期的1(1月)。月份更改为2月,但日期更改为32,依此类推,例如32-Feb-2016
。
final TextView tv_date = (TextView) dialyReportView.findViewById(R.id.datepicker);
@Override
public void onClick(View v) {
Calendar c;
c= Calendar.getInstance();
c.add(Calendar.DATE,1);
SimpleDateFormat df= new SimpleDateFormat("DD-MMM-yyyy");
String nextDate = df.format(c.getTime());
tv_date.setText(nextDate);
}
});
我是编程新手,所以感谢任何帮助。谢谢! :)
答案 0 :(得分:4)
问题是您使用的是D
(一年中的某一天),而不是d
(每月的某一天)。例如,以下代码输出31-Jan-2015
和32-Feb-2015
:
Calendar c = Calendar.getInstance();
c.set(2015, 0, 31);
c.SimpleDateFormat df= new SimpleDateFormat("DD-MMM-yyyy");
System.out.println(df.format(c.getTime()));
c.add(Calendar.DATE,1);
System.out.println(df.format(c.getTime()));
而以下输出31-Jan-2015
和01-Feb-2015
:
Calendar c = Calendar.getInstance();
c.set(2015, 0, 31);
c.SimpleDateFormat df= new SimpleDateFormat("dd-MMM-yyyy");
System.out.println(df.format(c.getTime()));
c.add(Calendar.DATE,1);
System.out.println(df.format(c.getTime()));
答案 1 :(得分:3)
更改日期格式代码行,如下所示。
SimpleDateFormat df = new SimpleDateFormat(“dd-MMM-yyyy”);
答案 2 :(得分:2)
检查https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
DD
表示一年中的一天,dd
表示每月的一天
Letter Date or Time Component Presentation Examples
D Day in year Number 189
d Day in month Number 10