java – 以MM / DD / YY格式解析日期的最佳方式是什么,并将其调
发布时间:2020-12-14 05:20:32 所属栏目:Java 来源:网络整理
导读:我们的一个客户希望能够输入年份中只有2位数字的日期.日期将在过去,所以如果2位数年份在今年之后,我们希望它在上个世纪工作,但如果2位数年份等于或小于当年,则在当前世纪工作. 截至今天10/30/2008 01/01/01 = 01/01/2001 01/01/09 = 01/01/1909 这是一个奇怪
|
我们的一个客户希望能够输入年份中只有2位数字的日期.日期将在过去,所以如果2位数年份在今年之后,我们希望它在上个世纪工作,但如果2位数年份等于或小于当年,则在当前世纪工作.
截至今天10/30/2008 01/01/01 = 01/01/2001 01/01/09 = 01/01/1909 这是一个奇怪的要求,我解决了这个问题,我只是不喜欢我的解决方案. 谢谢您的帮助. public static String stupidDate(String dateString)
{
String twoDigitYear = StringUtils.right(dateString,2);
String newDate = StringUtils.left(dateString,dateString.length() - 2);
int year = NumberUtils.toInt(twoDigitYear);
Calendar c = GregorianCalendar.getInstance();
int centuryInt = c.get(Calendar.YEAR) - year;
newDate = newDate + StringUtils.left(Integer.toString(centuryInt),2) + twoDigitYear;
return newDate;
}
解决方法
Groovy脚本(容易扔入java)演示了关于SimpleDateFormat的@bobince点.
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat('MM/dd/yy')
java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat('yyyy-MM-dd')
Calendar cal = Calendar.getInstance()
cal.add(Calendar.YEAR,-100)
sdf.set2DigitYearStart(cal.getTime())
dates = ['01/01/01','10/30/08','01/01/09']
dates.each {String d ->
println fmt.format(sdf.parse(d))
}
Yeilds 2001-01-01 2008-10-30 1909-01-01 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
