我想让这个月的某天实际从该字段中减去天数。
注意:这一天是自定义选择的,例如2012-09-10
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse("2012-10-24);
Calendar calendar= Calendar.getInstance();
Calendar csd= Calendar.getInstance();
calendar.setTime(d2);
csd.add(calendar.DAY_OF_MONTH, -5);
csd.add(calendar.get(Calendar.DAY_OF_MONTH), - 5)
以上实际上会错误地说IllegalArgumentException
,但是当我输出它时打印正确的值
calendar.DAY_OF_MONTH
无法打印d2中的正确日期。如果我做错了或者这不是正确的做法,我会感到困惑吗?
更新
这正是我在我的代码中所拥有的。我想要任何日期范围数组。假设用户已将结束日期设置为"2012-8-20"
中的d2
。我想在一个数组中过去30天的日期,但代码不起作用。
for(int count = 30; count >=1; count--) {
Calendar csd = Calendar.getInstance();
csd.add(calendar.DAY_OF_MONTH, -count);
String dt = (csd.get(Calendar.YEAR)) + "-" + (csd.get(Calendar.MONTH)+1) + "-" + (csd.get(Calendar.DATE));
aDays[30 - count] = dt;
}
答案 0 :(得分:2)
csd.add(calendarEndDate.get(Calendar.DAY_OF_MONTH), -5)
第一个参数应该是字段类型。
示例:
csd.add(Calendar.DAY_OF_MONTH, -5)
在你的情况下:
calendarEndDate.get(Calendar.DAY_OF_MONTH)
返回月中的某一天,但Calendar
期望哪个字段需要修改。
请参阅日历API documentation。
修改强>
calendar.add(calendar.DAY_OF_MONTH, -5);
int dayofMonth = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(dayofMont);
答案 1 :(得分:1)
它对我有用。
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String)"2012-10-24");
Calendar calendar= Calendar.getInstance();
Calendar csd= Calendar.getInstance();
calendar.setTime(d2);
calendar.add(calendar.DAY_OF_MONTH, -5);
System.out.println(new Date(calendar.getTimeInMillis()));
csd.add(csd.DAY_OF_MONTH, -5);
System.out.println(new Date(csd.getTimeInMillis()));
csd.add(calendar.get(Calendar.DAY_OF_MONTH), -5);//wrong is giving an invalid argument
更新
String[] aDays = new String[30];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd");
for (int count = 30; count >= 1; count--) {
Calendar csd = Calendar.getInstance();
csd.add(Calendar.DAY_OF_MONTH, -count);
aDays[30 - count] = (sdf.format(new Date(csd.getTimeInMillis())));
}
//to double check it
for (int count = 30; count >= 1; count--) {
System.out.println(aDays[30 - count]);
}
我希望你有你所需要的一切来理解这是如何工作的,祝你好运![/ p>