??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久9999高清 ,av在线播放资源,国产成人精品久久久http://www.aygfsteel.com/ruoyoux/category/35511.html为梦惌来Qؓ自由而生? 性情若水Q风h_风息水止Q故时而激荡,时又清^…?/description>zh-cnTue, 02 Jun 2009 19:25:14 GMTTue, 02 Jun 2009 19:25:14 GMT60遍历两个日期之间天数的算?/title><link>http://www.aygfsteel.com/ruoyoux/articles/279347.html</link><dc:creator>Blog of JoJo</dc:creator><author>Blog of JoJo</author><pubDate>Mon, 01 Jun 2009 03:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/ruoyoux/articles/279347.html</guid><wfw:comment>http://www.aygfsteel.com/ruoyoux/comments/279347.html</wfw:comment><comments>http://www.aygfsteel.com/ruoyoux/articles/279347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ruoyoux/comments/commentRss/279347.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ruoyoux/services/trackbacks/279347.html</trackback:ping><description><![CDATA[<p>package pkg.chart; <br /> <br /> import java.text.ParseException; <br /> import java.text.SimpleDateFormat; <br /> import java.util.Calendar; <br /> import java.util.Date; <br /> <br /> public class Test { <br /> public static void main(String[] args) throws ParseException { <br /> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); <br /> Long startM = sdf.parse("2009-1-14").getTime(); <br /> Long endM = sdf.parse("2010-1-14").getTime(); <br /> long result = (endM - startM) / (24 * 60 * 60 * 1000); <br /> System.out.println("?" + result + "?); <br /> <br /> Date startDate = sdf.parse("2009-01-14"); <br /> Calendar startTime = Calendar.getInstance(); <br /> startTime.clear(); <br /> startTime.setTime(startDate); <br /> for (int i = 0; i < (int)result;i++) { <br /> String str = startTime.get(Calendar.YEAR) + "-" <br /> + startTime.get(Calendar.MONTH) + "-" <br /> + startTime.get(Calendar.DAY_OF_MONTH); <br /> System.out.println(str); <br /> startTime.add(Calendar.DAY_OF_YEAR, 1); <br /> } <br /> } <br /> }<br /> <br /> <br /> package demo;</p> <p>import java.text.ParseException;<br /> import java.text.SimpleDateFormat;<br /> import java.util.Calendar;<br /> import java.util.Date;<br /> import java.util.GregorianCalendar;</p> <p>/**<br />  * 遍历两个日期之间天数的算?br />  * <br />  */<br /> public class MyTest {<br />  public static void main(String[] args) throws ParseException {<br />   String start = "2007-01-27";<br />   String end = "2008-03-04";<br />   //字符串{换成日期<br />   SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");<br />   Date startDate=format.parse(start);<br />   Calendar startTime=Calendar.getInstance();<br />   startTime.clear();<br />   startTime.setTime(startDate);<br />   int startYear = startTime.get(Calendar.YEAR);<br />   int startMonth = startTime.get(Calendar.MONTH);<br />   int startDay = startTime.get(Calendar.DAY_OF_MONTH);<br />   Date endDate=format.parse(end);<br />   Calendar endTime=Calendar.getInstance();<br />   endTime.clear();<br />   endTime.setTime(endDate);<br />   int endYear = endTime.get(Calendar.YEAR);<br />   int endMonth = endTime.get(Calendar.MONTH);<br />   int endDay = endTime.get(Calendar.DAY_OF_MONTH);<br />   System.out.println("注意西方的月份从0?1Q中国的月䆾??2");<br />   System.out.println("下面输入的是中国的日?注意其中的{换问?);<br />   System.out.println("start date : " + start);<br />   System.out.println("end date : " + end);<br />   <br />   int count = 0;<br />   for (int x = startYear; x <= endYear; x++) {<br />    //|马历法产生q䆾公元1582q?br />    int gregorianCutoverYear = 1582;<br />    boolean isLeapYear = x >= gregorianCutoverYear ? <br />      ((x%4 == 0) && ((x%100 != 0) || (x%400 == 0))) : <br />       (x%4 == 0);<br />    //判断是否是闰q?br />    //javaҎ<br />    //boolean isLeapYear = (new GregorianCalendar()).isLeapYear(x);<br />    <br />    String isBigYear = "是^q?;<br />    if (isLeapYear) {<br />     isBigYear = "是闰q?;<br />    }<br />    System.out.println(x + "q? + isBigYear);<br />    <br />    //获取开始月的最大天?br />    //javaҎ<br />    //SimpleDateFormat aFormat=new SimpleDateFormat("yyyy-MM-dd");<br />    //Date date = aFormat.parse(start);<br />    //Calendar time = Calendar.getInstance();<br />    //time.clear();<br />    //time.setTime(date);<br />    //int max=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数<br />    //System.out.println(max); <br />    <br />    //获取开始月的最大天敎ͼ大月?Q?Q?Q?Q?Q?0Q?2Q小月是4Q?Q?Q?1Q特D月?<br />    int max = 0;<br />    if (startMonth == 1) {<br />     if (isLeapYear) {<br />      max = 29;<br />     } <br />     if (!isLeapYear) {<br />      max = 28;<br />     }<br />    }<br />    if (startMonth == 3 || startMonth == 5 || startMonth == 8 || startMonth == 10) {<br />     max = 30;<br />    }<br />    if (startMonth == 0 || startMonth == 2 || startMonth == 4 || startMonth == 6 || startMonth == 7 || startMonth == 9 || startMonth == 11) {<br />     max = 31;<br />    }<br />    <br />    //循环每个?br />    //如果在日期范围内月䆾循环时自增到了一q的最后一个月将月䆾初始化到一月䆾<br />    int y = 0;<br />    //如果是开始日期的W一个年的月数就从开始月数@?br />    if (x == startYear) {<br />     y = startMonth;<br />    }<br />    for (; y < 12; y++) { <br />     <br />     //获取当月的最大天敎ͼ大月?Q?Q?Q?Q?Q?0Q?2Q小月是4Q?Q?Q?1Q特D月?<br />     max = 0;<br />     if (y == 1) {<br />      if (isLeapYear) {<br />       max = 29;<br />      } <br />      if (!isLeapYear) {<br />       max = 28;<br />      }<br />     }<br />     if (y == 3 || y == 5 || y == 8 || y == 10) {<br />      max = 30;<br />     }<br />     if (y == 0 || y == 2 || y == 4 || y == 6 || y == 7 || y == 9 || y == 11) {<br />      max = 31;<br />     }<br />     <br />     int ty = y + 1;<br />     System.out.println(x + "q? + ty + "?);<br />     <br />     //循环每一?br />     int z = 1;<br />     //如果是开始日期的W一个月的天数就从开始天数@?br />     if (x == startYear && y == startMonth) {<br />      z = startDay;<br />     }<br />     for (; z <= max; z++) {<br />      count++;<br />      <br />      System.out.println( x + "q? + ty + "? + z + "?); <br />      <br />      if (x == endYear && y == endMonth && z == endDay) {<br />       break;<br />      }<br />     }</p> <p><br />     //如果已经遍历q了截至日期的最后月份就中止月䆾的@?br />     if (x == endYear && y == endMonth) {<br />      break;<br />     }<br />    <br />    }<br />   }<br />   <br />   System.out.println(start + " ?" + end + " 的天数差Q? + count);<br />   <br />  }</p> } <img src ="http://www.aygfsteel.com/ruoyoux/aggbug/279347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ruoyoux/" target="_blank">Blog of JoJo</a> 2009-06-01 11:10 <a href="http://www.aygfsteel.com/ruoyoux/articles/279347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java日期操作 ?Timer定时?/title><link>http://www.aygfsteel.com/ruoyoux/articles/236711.html</link><dc:creator>Blog of JoJo</dc:creator><author>Blog of JoJo</author><pubDate>Sun, 26 Oct 2008 07:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/ruoyoux/articles/236711.html</guid><wfw:comment>http://www.aygfsteel.com/ruoyoux/comments/236711.html</wfw:comment><comments>http://www.aygfsteel.com/ruoyoux/articles/236711.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ruoyoux/comments/commentRss/236711.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ruoyoux/services/trackbacks/236711.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     Date,q个大家都认识了Q用于保存日期信息,但不推荐q行日期操作及初始化特定日期 </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     Calendar及其子类GregorianCalendar:日历c,日期操作Q初始化特定日期?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    DateFormat及其子类SimpleDateformat: 日期格式化,日期的默认显C方式不适合中国人,所以需要格式化Z国h常用的格式来昄?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    取得当期日期,    Date date=new Date();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    初始化特定日?假设我们要得到日期ؓ2006-10-27日的对象Q需要按如下方式获得?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">           Calendar cal = new    GregorianCalendar(2006, 9, 27,0,0,0);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">           Date date = cal.getTime();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">       注意:date,getTime()取得的是当期旉的毫U数,月䆾比实际的?</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">        GregorianCalendar构造方法参CơؓQ年Q月-1Q日Q小Ӟ分,U?nbsp;     </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    格式化ؓ我们熟悉的方式显C:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH;mm:ss");</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            String chinesedate = format.format(date);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">   日期 q_月,日,分,U的取得</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            Calendar cal = Calendar.getInstance();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          int year = cal.get(Calendar.YEAR);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            int month=cal.get(Calendar.MONTH)+1;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            int day = cal.get(Calendar.DAY_OF_MONTH);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">             int hour = cal.get(Calendar.HOUR_OF_DAY);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">            int    minute = cal.get(Calendar.MINUTE);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">             int second = cal.get(Calendar.SECOND);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">             注意Q月份,实际的月份要比Clendar得到的加1Q因为java月䆾是从0~11 </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">2.日期基本操作</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     得到两个日期相差的天?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      Date endDate=..</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      Date startDate = ...</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     相差天数 int days=(int) ((endDate.getTime()-startDate.getTime())/(1000*24*60*60)+0.5);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">   得到某个月的天数</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      Calendar cal = Calendar.getInstance();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     int month=cal.getActualMaximum(Calendar.DAY_OF_MONTH);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">   日期??/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      cal.add(Calendar.DATE, 1)Q?/日期??/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      Calendar.YEAR,Calendar.MONTH,Calendar.WEEK_OF_YEAR),分别是年Q月Q周</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">3Qjava.sql,Date()和java.util.Date();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      前面我们说的都是java.util.Datec,java.sql.DatecL操作数据库用的日期类?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     java.util.Date date=....</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      java.sql.Date sqldate=new java.sql.Date(date.getTime());</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     也可以这PString date="2005-11-10";</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      java.sql.Date sqlDate=java.sql.Date.valueOf(date);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">4,定时?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     a,~写c?实现TimeTask接口Q定时执行的代码写入run()Ҏ?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     b.    timer.schedule(TimeTask子类对象, 开始执行的日期, 周期);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">     周期为毫U数</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    例子:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    cMyTask:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.*;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public class MyTask extends TimerTask {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      public void run() {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          System.out.println("MyTask 正在执行...");</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      }</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">    cTimerDemo:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.Timer;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.Calendar;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.GregorianCalendar;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.Date;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public class TimerDemo {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      public static void main(String[] args) {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          Timer timer = new Timer();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          MyTask task = new MyTask();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          Calendar cal = new GregorianCalendar(2006, 9, 28, 12, 49, 0);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          Date date = cal.getTime();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          System.out.println("date :" + date.toLocaleString());</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">          timer.schedule(task, date, 1000);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">      }</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">***********************************************************************************************</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">在某些时? 我们需要实现这L功能,某一E序隔一D|间执行一?而这一事情ql本w来完成,q不是h为的触发,我们一般可U此为定时器d.</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">  q类技术主要应用到那些需要进行后台整理数据的pȝ?比如说数据仓?数据挖掘{?</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">  其实到Java?实现h是非常简单的,下面我们以每?U钟打引一?Hello world"ZQ?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.TimerTask; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public class TimeTast extends TimerTask ...{</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">// 在这里写你要定时执行的方?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public void run() ...</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">System.out.println("Hello World!"); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.Date; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">import java.util.Timer; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">/** *//**</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">* 定时器测?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">* @author FeGe</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">*/</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public class Test ...{</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public void execute() ...{</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Timer timer = new Timer(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">TimeTast myTimeTask = new TimeTast(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Date date = new Date(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">long timestamp = 5000; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">/** *//**</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">* myTimeTask 指定执行的线E?date 指定W一ơ日期执行的旉 timestamp 指定每格多久再次执行一?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">*/</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">timer.schedule(myTimeTask, date, timestamp); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public static void main(String[] args) ...{</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Test t = new Test(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">t.execute(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">  一个最单的定时器Q务就完成了。是不是太简单了点呢Q其实就q么单?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">**************************************************************************************************************</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">下面Servlet侦听器结合Java定时器来讲述整个实现q程。要q用Servlet侦听器需要实?javax.servlet.ServletContextListener接口Q同时实现它的contextInitialized (ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。考虑定时器有个徏立和销毁的q程Q看了前面两个接口函敎ͼ׃容置疑的把徏立的q程|入 contextInitializedQ把销毁的q程|入contextDestroyed了?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">我把ServletContextListener的实现类取名为ContextListener,在其内添加一个定时器Q示例代码如下所C(虑幅Q仅提供部分代码供读者参考)Q?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">private java.util.Timer timer = null;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public void contextInitialized(ServletContextEvent event) {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">timer = new java.util.Timer(true);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">event.getServletContext().log("定时器已启动"); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">event.getServletContext().log("已经dd调度?);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public void contextDestroyed(ServletContextEvent event) {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">timer.cancel();</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">event.getServletContext().log("定时器销?);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">} </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">?上代码中, timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000)q一行ؓ定时器调度语句,其中MyTask是自定义需要被调度的执行Q务(在我的胦政数据中心项目中是报表计算引擎入口Q,?java.util.TimerTaskl承Q下面会重点讲述Q第三个参数表示每小??0*60*1000毫秒)被触发一ơ,中间参数0表示无gq?其它代码相当单,不再详细说明?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">下面介绍MyTask的实玎ͼ上面的代码中看到了在构造MyTaskӞ传入?javax.servlet.ServletContextcd参数,是ؓ记录Servlet日志方便而传入,因此需要重载MyTask的构造函敎ͼ其父 cjava.util.TimerTask原构造函数是没有参数的)。在timer.schedule()的调度中,讄了每时调度一?因此如果惛_ 现调度Q务每24时被执行一ơ,q需要判断一下时钟点Q以帔RC_SCHEDULE_HOUR表示(晚上12点,也即0?。同时ؓ防止24时执行?来,dq未执行完(当然Q一般Q务是没有q么长的Q,避免W二ơ又被调度以引v执行冲突Q设|了当前是否正在执行的状态标志isRunning。示例代 码如下所C:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">private static final int C_SCHEDULE_HOUR = 0;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">private static boolean isRunning = false;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">private ServletContext context = null;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public MyTask(ServletContext context) {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">this.context = context;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">public void run() {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Calendar cal = Calendar.getInstance(); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">if (!isRunning) { </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) { </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">isRunning = true; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">context.log("开始执行指定Q?);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">//TODO d自定义的详细dQ以下只是示?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">int i = 0;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">while (i++ Q?10) {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">context.log("已完成Q务的" + i + "/" + 10);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">} </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">isRunning = false;</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">context.log("指定d执行l束"); </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">} </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">} else {</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">context.log("上一ơQ务执行还未结?);</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">}</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">} </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">上面代码?//TODO……"之下四行是真正被调度执行的演CZ?在我的胦政数据中心项目中是报表计算q程)Q您可以换成自己希望执行的语句?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">到这儿,ServletContextListener和MyTask的代码都已完整了。最后一步就是把ServletContextListener部v到您的Web工程中去Q在您工E的web.xml配置文g中加入如下三行:</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">QlistenerQ?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Qlistener-classQcom.test.ContextListenerQ?listener-classQ?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">Q?listenerQ?nbsp; </span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">当然Q上面的com.test得换成您自己的包名了。保存web.xml文g后,把工E打包部|到Tomcat中即可。Q务会在每?2点至凌晨1点之间被执行Q上面的代码会在Tomcat的日志文件中记录如下Q?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">2003-12-05 0Q?1Q?9 开始执行指定Q?/span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">2003-12-05 0Q?1Q?9 已完成Q务的1/10</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">……</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">2003-12-05 0Q?1Q?9 已完成Q务的10/10</span></span></p> <p style="text-indent: 2em"><span style="font-family: Ҏ姚体"><span style="font-family: Ҏ姚体">2003-12-05 0Q?1Q?9 指定d执行l束</span></span></p> <img src ="http://www.aygfsteel.com/ruoyoux/aggbug/236711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ruoyoux/" target="_blank">Blog of JoJo</a> 2008-10-26 15:18 <a href="http://www.aygfsteel.com/ruoyoux/articles/236711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">¸</a>| <a href="http://" target="_blank">ī</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˻</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ij</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">Ӷ</a>| <a href="http://" target="_blank">踽</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ȷɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֹ</a>| <a href="http://" target="_blank">괨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">¦</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>