科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道java日期加减法

java日期加减法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

java日期加减法

作者: sunyfun 来源:赛迪网技术社区 2007年11月1日

关键字: 加减法 java

  • 评论
  • 分享微博
  • 分享邮件
有些时候,我们想在当前的日期上加几天、几个月,或几年,使用java.util.Date,却总也找不到合适的方法,无奈之下,请一个高人帮忙,老刘给了一句话:使用Canlender。之后,我就使用Calender,一用,还真好用,就写出来,和大家共同分享: TJ= @-uA  
²   我的需求 eJ0:D;`  
我在作一个调查问卷,想设定问卷的有效天数:在发布之日后30天之内有效,怎么实现呢? ]|gUp7f  
²   我的实现 _?t#m< Rt  
-:$d!S a@  
/* 0%(yTTy9u  
* @author 张毅 L5|dP:,A-  
* 2005-12-14 > v@im  
*/ e@U)R"9  
    Calendar calendar = Calendar.getInstance(); i\!|:JS  
    //getTime()方法是取得当前的日期,其返回值是一个java.util.Date类的对象 C|#|,h/  
    res.setResOpenDate(calendar.getTime()); .j}:g{kU  
    int day = calendar.get(Calendar.DAY_OF_YEAR); 4p.e_Z  
    calendar.set(Calendar.DAY_OF_YEAR, day + 30); WB:"cV`  
    //投票的有效期30天 eTtlH:Yx  
    res.setResEndDate(calendar.getTime()); Y!r 5K'!r  
²   详细说明  OX"1k  
⑴Calendar是java.util.* 中的一个类,所以在使用前,我们要导入包java.util.*; %+).>'!R'M  
//产生一个日历类的对象,我们不能使用new Calendar()来构造实例,因为//Calendar的构造函数都是protected,也就是说,构造函数是保护成员。 B++uqx>  
⑵关于Calendar的Filed }M# IMgt  
在Calendar中定义了日历的各个成员,比如:年,月,日,包括不同的记录方法,比如:同一天(2005-12-14)来说,在记录的时候,我们可以说是一周中的周三,是12月的第14天,是2005年的第****(你可以自己算一下)天。这就是不同的记录方法,所以在Calendar中就有了不同的定义: < xO+z  
Y2`_re)V  
  public final static int ERA = 0; 6 tJn z  
  public final static int YEAR = 1; ]HxPcC7P  
  public final static int MONTH = 2; +`I/^]  
  public final static int WEEK_OF_YEAR = 3; K;-k*N0  
  public final static int WEEK_OF_MONTH = 4; K;8MgP  
  public final static int DATE = 5; g\Nn$A8~R  
  public final static int DAY_OF_MONTH = 5; ~ '8Fd\yJ  
  public final static int DAY_OF_YEAR = 6; ?"x46u  
  public final static int DAY_OF_WEEK = 7; * Xi.U2  
  public final static int DAY_OF_WEEK_IN_MONTH = 8; - )_oR;>  
  public final static int AM_PM = 9; R[~[s5P~D  
  public final static int HOUR = 10; B/p R>&  
  public final static int HOUR_OF_DAY = 11; F,Q\~QY# 4  
  public final static int MINUTE = 12; 0Q ?P0H=y  
  public final static int SECOND = 13; @Nx~ &[:  
bEL3 ED&T  
这些定义是不同记录方法的标识,在此我没有列举完全,感兴趣的话你可以看一下Calendar的源代码。 Bi[|ip7!  
这些就是Calendar的Field,根据你的不同需求就可以去处不同的Field,不同的记录方法也是不同的的Filed,这样应该是好理解一些。 3K-~vD5}  
有了这些,我们就可以取得你想要的任何需要的东西了,如果你想知道今天是一年中的哪一天,就可以用: E9B>3Rq$(  
int day = calendar.get(Calendar.DAY_OF_YEAR); &Ku m45  
参数就是你想取得的Field,所有的这些都在Calendar中定义好了。 7c\(k!b#  
结果会告诉我们2005-12-14是2005年的第348天。 GA E"qr]  
然后你想知道30天后是几号呢? tYtQu,  
calendar.set(Calendar.DAY_OF_YEAR, day + 30); [JB[%NGy  
在这,你不需要去考虑12-14号加上30天是一月,是不是会出错,不会的,Calendar自己知道那一天是几月几号。 7yCbcmp|\  
 
Dm0FuN a  
所以你再取得其日期的时候就可以知道其日期了。当然你也可以直接通过Calendar来取得。 H`Z(kTnQ_  
其他的我就不一一说了,是一样的道理。这样一来,我们就可以使用Calendar实现日期的随意加减了。 yBn4% iO'  
以上是我的个人体会,如果你有更好的认识,不妨大家共享。不足之处,还望观者指点。
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章