-2

我想让一个月中的某一天从该字段中实际减去天数。

注意:日期是自定义选择的,如 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,但是当我 sysout 时会打印正确的值

calendar.DAY_OF_MONTH不会打印 d2 中的正确日期。如果我做错了什么或者这不是正确的方法,我会感到困惑?

更新

这正是我在代码中所拥有的。我想要任何日期范围的数组。假设用户已将结束日期设置"2012-8-20"为 in 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;
}
4

2 回答 2

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文档

编辑:

calendar.add(calendar.DAY_OF_MONTH, -5);
int dayofMonth = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(dayofMont);
于 2012-10-23T21:28:26.623 回答
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]);
        }

我希望你有所有你需要了解它是如何工作的,祝你好运朋友!

于 2012-10-23T21:32:23.520 回答