加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读