java – 以MM / DD / YY格式解析日期的最佳方式是什么,并将其调整到当前/上一个世纪?

前端之家收集整理的这篇文章主要介绍了java – 以MM / DD / YY格式解析日期的最佳方式是什么,并将其调整到当前/上一个世纪?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的一个客户希望能够输入年份中只有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
原文链接:https://www.f2er.com/java/122876.html

猜你在找的Java相关文章