栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么新的SimpleDateFormat对象包含错误年份的日历?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么新的SimpleDateFormat对象包含错误年份的日历?

我不确定汤姆为什么会说“这与序列化有关”,但是他有正确的说法:

private void initializeDefaultCentury() {    calendar.setTime( new Date() );    calendar.add( Calendar.YEAR, -80 );    parseAmbiguousDatesAsAfter(calendar.getTime());}

这是SimpleDateFormat.java中的第813行,该过程很晚。到那时为止,年份是正确的(日期部分的其余部分也是正确的),然后将其减80。

啊哈!

对的调用

parseAmbiguousDatesAsAfter()
是与以下调用相同的私有函数
set2DigitYearStart()

private void parseAmbiguousDatesAsAfter(Date startDate) {    defaultCenturyStart = startDate;    calendar.setTime(startDate);    defaultCenturyStartYear = calendar.get(Calendar.YEAR);}public void set2DigitYearStart(Date startDate) {    parseAmbiguousDatesAsAfter(startDate);}

现在我知道发生了什么。彼得在有关“苹果和橙子”的评论中是对的!SimpleDateFormat中的年份是“默认世纪”的第一年,该范围是两位数字的年份字符串(例如,“
1/12/14”)被解释为的范围。参见http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html#get2DigitYearStart%28%29:

因此,为了获得“效率”而不是清晰度,SimpleDateFormat中的年份用于存储“解析两位数年份的100年期间的开始”,而不是当前年份!

谢谢,这很有趣-终于让我安装了jdk源(我的

/
分区上只有4GB的总空间。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号