我使用以下代码以yyyy-MM-dd格式计算当前年份值
但是下面的代码将paramStartDate值分配为0001-01-01,这是不正确的
应该是“ 2014-01-01”

else if(scopeSelected != null && scopeSelected.equalsIgnoreCase("Year To Date")){

                    Calendar calendarStart = Calendar.getInstance();
                    calendarStart.set(Calendar.YEAR,calendarStart.YEAR);
                    calendarStart.set(Calendar.MONTH,0);
                    calendarStart.set(Calendar.DAY_OF_MONTH,1);
                    Date startDate=calendarStart.getTime();
                    DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
                    paramStartDate = dateFormat1.format(startDate);
                    setParamStartDate(paramStartDate);
                }

最佳答案

这就是问题:

calendarStart.set(Calendar.YEAR,calendarStart.YEAR);


您正在将值设置为Calendar.YEAR,它是一个值为1的常数。

如果您不想更改年份,只需完全删除此行。

(顺便说一句,我强烈建议使用Joda Time而不是内置的JavaAPI。JodaTime更加整洁。)

编辑:对于添加一年的新要求,您将使用

calendarStart.add(Calendar.YEAR, 1);

08-18 11:02