Java中Calendar的使用问题

super_loverax 2013-08-02 10:08:46
比如说我们要创建一个日历对象:
Calendar cInstance = Calendar.getInstance();
cInstance.set(year, month - 1, day);

加入年月日这三个字段是作为参数传进去的,我们如何保证可以生成一个合法的日历呢,
比方说2013-03-65 这样的,肯定就不能生成一个合法的日历了吧,我们如何去校验这些参数呢,请指教,谢谢啦!
...全文
231 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_loverax 2013-08-03
  • 打赏
  • 举报
回复
引用 4 楼 huntor 的回复:
引用
public void setLenient(boolean lenient)
这个方法
这是什么嘛
huntor 2013-08-03
  • 打赏
  • 举报
回复
引用
public void setLenient(boolean lenient)
这个方法
aniude 2013-08-03
  • 打赏
  • 举报
回复
calendar确实对于时间是很宽松的,会根据时间换算成实际的真实存在的日期
super_loverax 2013-08-03
  • 打赏
  • 举报
回复
引用 7 楼 huntor 的回复:
[quote=引用 5 楼 super_loverax 的回复:] [quote=引用 4 楼 huntor 的回复:] 看
引用
public void setLenient(boolean lenient)
这个方法
这是什么嘛[/quote] 这个决定了对输入数据的处理,如 2012 3 43, 设置了true或false后结果就不一样了。[/quote] 嗯,谢谢 。默认时间是宽松的,但是打个比方说,cInstance.set(2013,1,32) 默认会认为是合法的,它相当于2013年的63天,和cInstance.set(2013,2,4)对应的天数是一样的,这个怎么搞呢。如果遍历一年的日期岂不是会出现问题呀,还是我算法不合适?
huntor 2013-08-03
  • 打赏
  • 举报
回复
引用 5 楼 super_loverax 的回复:
[quote=引用 4 楼 huntor 的回复:] 看
引用
public void setLenient(boolean lenient)
这个方法
这是什么嘛[/quote] 这个决定了对输入数据的处理,如 2012 3 43, 设置了true或false后结果就不一样了。
S117 2013-08-03
  • 打赏
  • 举报
回复
引用 3 楼 super_loverax 的回复:
[quote=引用 2 楼 longtian1213 的回复:] cInstance.set(Calendar.YEAR,year); cInstance.set(Calendar.MONTH,month); cInstance.set(Calendar.DAY_OF_MONTH,day); 这样赋值呀
没那么简单吧,年月日是关联的,比如闰年和非闰年,大月份和小月份之类的![/quote] 看下帮助文档吧,里面说的很清楚
super_loverax 2013-08-02
  • 打赏
  • 举报
回复
引用 2 楼 longtian1213 的回复:
cInstance.set(Calendar.YEAR,year); cInstance.set(Calendar.MONTH,month); cInstance.set(Calendar.DAY_OF_MONTH,day); 这样赋值呀
没那么简单吧,年月日是关联的,比如闰年和非闰年,大月份和小月份之类的!
S117 2013-08-02
  • 打赏
  • 举报
回复
cInstance.set(Calendar.YEAR,year); cInstance.set(Calendar.MONTH,month); cInstance.set(Calendar.DAY_OF_MONTH,day); 这样赋值呀
末日哥 2013-08-02
  • 打赏
  • 举报
回复
传之前自己加个if判断啊

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧