本文章来给大家介绍Java中两位年份的转化程序代码,希望些方法对大家有所帮助哦。

最近在项目中碰到了一个两位年份转化的问题。一个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;

}

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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐