java日期格式转换问题

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

10个回答

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

yeahigh
yeahigh 刚的确发现了这个问题,debug走到yyyyMMdd就结束了!!一直没想明白
大约 3 年之前 回复
yeahigh
yeahigh 放到yyyyMMdd的前面?
大约 3 年之前 回复
yeahigh
yeahigh 什么意思
大约 3 年之前 回复

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

yeahigh
yeahigh 正在搞,但还没发现
大约 3 年之前 回复

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

图片说明

图片说明

顶楼顶楼,求大神帮助

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

yeahigh
yeahigh 并且输入1995-09-09转换输出后是1994-12-09
大约 3 年之前 回复
yeahigh
yeahigh 为什么写成yyyy/MM/dd或者yyyy年MM月dd日就可以正确转换?
大约 3 年之前 回复

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

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

yeahigh
yeahigh yyyymmdd????不行把
大约 3 年之前 回复

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

yeahigh
yeahigh thinks,已经解决了,我把yyyy-MM-dd放到了yyyyMMdd的前面,经测试两种都能正确格式化
大约 3 年之前 回复
yeahigh
yeahigh 噢噢噢噢,我就说mm代表的是分钟
大约 3 年之前 回复
立即提问