﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-liulc-文章分类-Java</title><link>http://www.blogjava.net/liulc/category/21565.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 13 Apr 2007 04:37:52 GMT</lastBuildDate><pubDate>Fri, 13 Apr 2007 04:37:52 GMT</pubDate><ttl>60</ttl><item><title>java日期加减法 [转载] </title><link>http://www.blogjava.net/liulc/articles/110236.html</link><dc:creator>liulc</dc:creator><author>liulc</author><pubDate>Thu, 12 Apr 2007 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/liulc/articles/110236.html</guid><wfw:comment>http://www.blogjava.net/liulc/comments/110236.html</wfw:comment><comments>http://www.blogjava.net/liulc/articles/110236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liulc/comments/commentRss/110236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liulc/services/trackbacks/110236.html</trackback:ping><description><![CDATA[<br><!---->
<div align=right></div>
<!----><br><span class=tpc_content>有些时候,我们想在当前的日期上加几天、几个月，或几年，使用java.util.Date，却总也找不到合适的方法，无奈之下，请一个高人帮忙，老刘给了一句话：使用Canlender。之后，我就使用Calender，一用，还真好用，就写出来，和大家共同分享：<br>&#178; &nbsp; 我的需求<br>我在作一个调查问卷，想设定问卷的有效天数：在发布之日后30天之内有效，怎么实现呢？<br>&#178; &nbsp; 我的实现<br><br>&nbsp;&nbsp;&nbsp; Calendar calendar = Calendar.getInstance();<br>&nbsp; &nbsp; //getTime()方法是取得当前的日期，其返回值是一个java.util.Date类的对象<br>&nbsp; &nbsp; res.setResOpenDate(calendar.getTime());<br>&nbsp; &nbsp; int day = calendar.get(Calendar.DAY_OF_YEAR);<br>&nbsp; &nbsp; calendar.set(Calendar.DAY_OF_YEAR, day + 30);<br>&nbsp; &nbsp; //投票的有效期30天<br>&nbsp; &nbsp; res.setResEndDate(calendar.getTime());<br>&#178; &nbsp; 详细说明<br>⑴Calendar是java.util.* 中的一个类，所以在使用前，我们要导入包java.util.*;<br>//产生一个日历类的对象，我们不能使用new Calendar()来构造实例，因为//Calendar的构造函数都是protected，也就是说，构造函数是保护成员。<br>⑵关于Calendar的Filed<br>在Calendar中定义了日历的各个成员，比如：年，月，日，包括不同的记录方法，比如：同一天（2005-12-14）来说，在记录的时候，我们可以说是一周中的周三，是12月的第14天，是2005年的第****（你可以自己算一下）天。这就是不同的记录方法，所以在Calendar中就有了不同的定义：<br><br>&nbsp; public final static int ERA = 0;<br>&nbsp; public final static int YEAR = 1;<br>&nbsp; public final static int MONTH = 2;<br>&nbsp; public final static int WEEK_OF_YEAR = 3;<br>&nbsp; public final static int WEEK_OF_MONTH = 4; <br>&nbsp; public final static int DATE = 5; <br>&nbsp; public final static int DAY_OF_MONTH = 5;<br>&nbsp; public final static int DAY_OF_YEAR = 6;<br>&nbsp; public final static int DAY_OF_WEEK = 7;<br>&nbsp; public final static int DAY_OF_WEEK_IN_MONTH = 8;<br>&nbsp; public final static int AM_PM = 9;<br>&nbsp; public final static int HOUR = 10;<br>&nbsp; public final static int HOUR_OF_DAY = 11;<br>&nbsp; public final static int MINUTE = 12;<br>&nbsp; public final static int SECOND = 13;<br><br>这些定义是不同记录方法的标识，在此我没有列举完全，感兴趣的话你可以看一下Calendar的源代码。<br>这些就是Calendar的Field,根据你的不同需求就可以去处不同的Field，不同的记录方法也是不同的的Filed，这样应该是好理解一些。<br>有了这些，我们就可以取得你想要的任何需要的东西了，如果你想知道今天是一年中的哪一天，就可以用：<br>int day = calendar.get(Calendar.DAY_OF_YEAR);<br>参数就是你想取得的Field,所有的这些都在Calendar中定义好了。<br>结果会告诉我们2005-12-14是2005年的第348天。<br>然后你想知道30天后是几号呢？<br>calendar.set(Calendar.DAY_OF_YEAR, day + 30);<br>在这，你不需要去考虑12-14号加上30天是一月，是不是会出错，不会的，Calendar自己知道那一天是几月几号。<br></span>
<img src ="http://www.blogjava.net/liulc/aggbug/110236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liulc/" target="_blank">liulc</a> 2007-04-12 17:44 <a href="http://www.blogjava.net/liulc/articles/110236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>