java日期格式转换问题

为什么输入日期格式为yyyy-MM-dd但是输出之后每个数字都进行减一?
例如:输入(String) 2015-01-01转换为Date输出之后成了2014-12-01
但是其他格式:yyyy年MM月dd日 yyyy/MM/dd 转换后可以正确转换

楼主:yyyy-MM-dd 这个格式的日期字符串可以被 yyyyMMdd 格式化。

图片说明

图片说明

顶楼顶楼,求大神帮助

public class MyConverter extends StrutsTypeConverter {

private SimpleDateFormat[] simpleDateFormat = {
    new SimpleDateFormat("yyyy年MM月dd日"),  
    new SimpleDateFormat("yyyy/MM/dd"), 
    new SimpleDateFormat("yyyy.MM.dd"), 
    new SimpleDateFormat("yyyyMMdd"),   
    new SimpleDateFormat("yyyy-MM-dd")  
};

@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
    if(values == null || values.length == 0){
        return null;
    }
    if(Date.class != toClass){
        return null;
    }
    for(SimpleDateFormat sdf : simpleDateFormat){
        try {
            Date date = sdf.parse(values[0]);
            return date;
        } catch (ParseException e) {
            continue;

// e.printStackTrace();
// throw new RuntimeException(e);
}
}
return null;
}

@Override
public String convertToString(Map context, Object o) {
    // TODO Auto-generated method stub
    return null;
}

}


楼主:月份是从0-11

你需要DeBug走一下程序看下String类型的Date 此值是否存在问题(应该是存在问题的)。

图片说明
楼主我测试了下,出现以上情况。

yyyy-MM-dd 这个格式的字符串 按理说不应被 yyyyMMdd 这个格式 可以格式化的 , 但是在JAVA 中 可以被yyyyMMdd格式化 的,具体原因不知道 ,可能是JAVA的一个bug。

楼主:你把yyyyMMdd 换成 yyyymmdd 。这样,虽然可以被格式化,但是格式化出来是正常的。

楼主:不好意思 --- “你把yyyyMMdd 换成 yyyymmdd 。这样,虽然可以被格式化,但是格式化出来是正常的。 ” 这个是不对的