以'yyyy-MM-dd'格式计算当前年份会在Java中设置不正确的值

Ami*_*rad 0 java

我使用以下代码以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);
                }   
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

这就是问题:

calendarStart.set(Calendar.YEAR,calendarStart.YEAR);
Run Code Online (Sandbox Code Playgroud)

您将值设置为Calendar.YEAR值为1的常量.

如果您不想更改年份数,请完全删除此行.

(顺便说一句,我强烈建议使用Joda Time而不是内置的Java API.Joda Time 清晰.)

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

calendarStart.add(Calendar.YEAR, 1);
Run Code Online (Sandbox Code Playgroud)

  • calendarStart.add(Calendar.YEAR,1) (3认同)
  • 是.始终从类中访问静态成员变量而不是实例.有助于避免这样的问题. (2认同)