我们的一位客户希望能够输入仅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中)演示了@bobince关于SimpleDateFormat的观点。
import java.text.SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat('MM/dd/yy')
SimpleDateFormat fmt = new 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))
}
产量
2001-01-01
2008-10-30
1909-01-01
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句