一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java中两位年份的转化程序代码

时间:2013-09-24 编辑:简简单单 来源:一聚教程网


最近在项目中碰到了一个两位年份转化的问题。一个4012的YYmm的时间转化为日期时,变成1940年12月,与预想的2040年12年不一致。看了一下Java的源代码,如果不设置基准时间的话,Java的SimpleDateFormat默认转化前80年到后19年的年份。比如现在的时间是2013/4/15 10:00:00.000那么33/4/15 10:00:00.000会转化为1933年,而33/4/15 9:59:59.999会转化为2033年。修改方法是用set2DigitYearStart指定两位的开始时间。

修改之前的代码

 代码如下 复制代码

public static Date getDate(String strDate) {
    Date date = null;
    if (strDate!= null) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
        formatter.setLenient(false);
        try {
            date = formatter.parse(strDate);
        }
        catch (Exception e) {
        }
    }
    return date;
}

修改之后的代码

 代码如下 复制代码

public static Date getDate(String strDate) {
    Date date = null;
    if (strDate!= null) {
        Calendar startTime = Calendar.getInstance();
        int year = startTime.get(Calendar.YEAR) - 20;
        // 这里初始化时间,然后设置年份。只以年份为基准,不看时间
        startTime.clear();
        startTime.set(Calendar.YEAR, year);

        SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
        formatter.setLenient(false);
        formatter.set2DigitYearStart(startTime.getTime());

        try {
            date = formatter.parse(strDate);
        }
        catch (Exception e) {
        }
    }
    return date;
}

原文来自:宇托的狗窝博客

热门栏目