Java Calendar.DAY_OF_YEAR有时会被一个人关闭
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Calendar.DAY_OF_YEAR有时会被一个人关闭,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1324字,纯文字阅读大概需要2分钟。
内容图文
![Java Calendar.DAY_OF_YEAR有时会被一个人关闭](/upload/InfoBanner/zyjiaocheng/725/8c8f2d2d895e459aaa5ee0f8de71fbda.jpg)
我试图根据他们的出生日期获得用户的年龄.出生日期以XML格式的字符串形式给出,并转换为日历,如下所示:
final Calendar dob = javax.xml.bind.DatatypeConverter.parseDate(value);
然后我就像这样计算用户的年龄:
final Calendar now = Calendar.getInstance();
int age = now.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (now.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)) {
--age;
}
我今天发现,如果今天是用户的生日(把帽子放在一边,那不是我的),那么这个年龄太年轻了.也就是说,如果用户出生于2000年并且今天是她的生日,那么她应该是14岁,而不是13岁.但是当它归结为它时,Java似乎有DAY_OF_YEAR错误:
System.out.println(String.format("Today: %d-%d; Birthday: %d-%d", now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH), dob.get(Calendar.MONTH), dob.get(Calendar.DAY_OF_MONTH)));
// prints: Today: 9-22; Birthday: 9-22
System.out.println(String.format("Today: %d; Birthday: %d", now.get(Calendar.DAY_OF_YEAR), dob.get(Calendar.DAY_OF_YEAR)));
// prints: Today: 295; Birthday: 296
是什么赋予了?
解决方法:
边缘条件导致问题.
2000年有什么特别之处?
这是闰年.
Calendar cal = new GregorianCalendar();
cal.set(2000, 11, 31);
System.out.println(cal.getTime());
System.out.println(cal.get(Calendar.DAY_OF_YEAR));
输出:
Sun Dec 31 13:43:28 EST 2000
366
2月29日之后的所有东西都被闰年特别抵消了1.因此,没错.事实上,它正在按预期工作.
您应该比较月份和月份来解决此问题.
内容总结
以上是互联网集市为您收集整理的Java Calendar.DAY_OF_YEAR有时会被一个人关闭全部内容,希望文章能够帮你解决Java Calendar.DAY_OF_YEAR有时会被一个人关闭所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。