JUST DO IT ~

我只想当个程序员

关于 java.util.calender 设计时候一些想法

关于 java.util.calender 设计时候一些想法

new calender() 以后,考虑到性能 setday(), setyear() 都完成后,如果遇到要get 输出才根据情况重新计算.

如果我们遇到了设计一个处理信息的类,这个类有多个参与计算的要素,如果计算复杂,那就完全没有必要经常重复计算。

class a {
private int data1; //数据元素1
private long date2;  //数据元素2
//变化标志  如果true
private boolean  flag; 

setdate1 (){  flag =true; //元素变化过了  } ..

getdate1(){   }..

process(){
  if(flag){
   //确定更新后  重新计算
  }
}

getresult(){
   process();  // 计算性的结果
   return ...
  }
}


calender 因为使用了这种计算方式的一些细节:

初时日期 1999-8-31日
调用 set(Calendar.MONTH, Calendar.SEPTEMBER)  便更了数据模型了一部分
因为不存在   9月31日   所以    1999 - 9 月 只有 30日
一旦使用get方法返回 结果。那么重新计算获得 10月1日 。
(根据
例如,lenient 模式下的 GregorianCalendar 将 MONTH == JANUARY、DAY_OF_MONTH == 32 解释为 February 1。
1月没有 32天  所以 就延后 1天 到了2月1日
 )

2006年10月23日14:29:40


下面这段来自 java 手册翻译。

示例:假定 GregorianCalendar 最初被设置为 1999 年 8 月 31 日。
调用 set(Calendar.MONTH, Calendar.SEPTEMBER) 将该日期设置为 1999 年 9 月 31 日。
如果随后调用 getTime(),那么这是分析 1999 年 10 月 1 日的一个暂时内部表示。
但是,在调用 getTime() 之前调用 set(Calendar.DAY_OF_MONTH, 30) 会将该日期
设置为 1999 年 9 月 30 日,因为在调用 set() 之后没有发生重新计算。


 

posted on 2006-10-23 14:35 小高 阅读(835) 评论(0)  编辑  收藏 所属分类: java基础


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(3)

随笔分类(352)

收藏夹(19)

关注的blog

手册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜