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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |