关闭

java代码获取系统时间和执行定时任务

321人阅读 评论(0) 收藏 举报

获取系统时间

主要类简介

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A''Z''a''z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

获取系统时间方法

 

  1. /** 
  2.  * 获取系统时间。 
  3.  * <p>时间格式中的元素: 
  4.  * <p>G  Era 
  5.  * <p>y  年  Year 
  6.  * <p>M  年中的月份 
  7.  * <p>w  年中的周数 
  8.  * <p>W  月份中的周数 
  9.  * <p>D  年中的天数  
  10.  * <p>d  月份中的天数 
  11.  * <p>F  月份中的星期 
  12.  * <p>E  星期中的天数 
  13.  * <p>a  Am/pm 标记 
  14.  * <p>H  一天中的小时数(0-23) 
  15.  * <p>k  一天中的小时数(1-24) 
  16.  * <p>K  am/pm 中的小时数(0-11) 
  17.  * <p>h  am/pm 中的小时数(1-12) 
  18.  * <p>m  小时中的分钟数 
  19.  * <p>s  分钟中的秒数 
  20.  * <p>S  毫秒数 
  21.  * <p>z  时区 
  22.  * <p>Z  时区 
  23.  *  
  24.  * 格式:"yyyy.MM.dd G 'at' HH:mm:ss z"。 
  25.  * 时间:2001.07.04 AD at 12:08:56 PDT 。 
  26.  * 注意:格式中的字母对大小写敏感。 
  27.  * @return 返回字符串形式的字符串时间。形如:19:56:43。 
  28.  */  
  29. public static String getSystemTime()  
  30. {  
  31.     //获取系统时间,为日历对象。  
  32.     Calendar calendar = Calendar.getInstance();  
  33.       
  34.     //定义时间格式。  
  35.     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");  
  36.       
  37.     //从日历对象中获取Date,组合成指定时间格式的字符串。  
  38.     String time = simpleDateFormat.format(calendar.getTime());  
  39.       
  40.     return time;  
  41. }  

执行定时任务

监听定时任务

监听定时任务需要配置web.xml。当服务器启动时,通过web.xml的监听,定时器也同时启动。配置如下:

  1. <listener>  
  2.     <listener-class>com.test.time.ScheduleTask</listener-class>  
  3. </listener>  

其中:com.test.time.ScheduleTask是定时任务的类。该类需要实现接口javax.servlet.ServletContextListener;。

定时执行的任务

这个任务类,需要继承TimerTask或者实现Runnable。

然后实现run()方法,定时任务启动或,服务器会定时执行该方法,从而完成定时任务。

定时任务初始化与销毁

这些事情是在类com.test.time.ScheduleTask中完成,该类实现ServletContextListener中的两个方法,从而初始化(服务器启动)和销毁(服务器关闭)定时任务。

实例:控制台打印系统时间

实例描述

下面的类完成每隔一秒在控制台打印一次系统时间,时间形如:12:08:56。

配置web.xml后,在服务器上启动工程即可开始打印。

实例完整代码

  1. package com.test.time;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.TimerTask;  
  6. import java.util.concurrent.Executors;  
  7. import java.util.concurrent.ScheduledExecutorService;  
  8. import java.util.concurrent.TimeUnit;  
  9.   
  10. import javax.servlet.ServletContextEvent;  
  11. import javax.servlet.ServletContextListener;  
  12.   
  13. /** 
  14.  * 定时任务类。需要在web.xml中监听该类。 
  15.  * @author MyLove 
  16.  * 
  17.  */  
  18. public class ScheduleTask extends TimerTask implements ServletContextListener  
  19. {  
  20.     /** 
  21.      * 来着于TimerTask的方法。定时任务就是定时执行该run()方法。 
  22.      */  
  23.     @Override  
  24.     public void run()   
  25.     {  
  26.         // TODO Auto-generated method stub  
  27.         System.out.println(ScheduleTask.getSystemTime());  
  28.     }  
  29.   
  30.     /** 
  31.      * 结束定时任务。关闭服务器时,执行。 
  32.      */  
  33.     @Override  
  34.     public void contextDestroyed(ServletContextEvent arg0)   
  35.     {  
  36.         // TODO Auto-generated method stub  
  37.           
  38.     }  
  39.   
  40.     /** 
  41.      * 初始化定时任务,来着ServletContextListener。启动服务器是,便启动执行。 
  42.      */  
  43.     @Override  
  44.     public void contextInitialized(ServletContextEvent arg0)   
  45.     {  
  46.         //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。  
  47.         ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);  
  48.           
  49.         //创建定时执行的对象,定时执行该对象中的run方法,该对象必须继承Runnable。  
  50.         ScheduleTask task = new ScheduleTask();  
  51.           
  52.         //第一次执行任务的事情(从服务器启动开始计算)。  
  53.         long firstTime = 1;  
  54.           
  55.         //第一次执行后,执行的时间间隔。  
  56.         long period = 1;  
  57.           
  58.         //初始化定时任务,TimeUnit.SECONDS时间单位为秒。  
  59.         scheduler.scheduleAtFixedRate(task, firstTime, period,TimeUnit.SECONDS);  
  60.     }  
  61.       
  62.     /** 
  63.      * 获取系统时间。 
  64.      * <p>时间格式中的元素: 
  65.      * <p>G  Era 
  66.      * <p>y  年  Year 
  67.      * <p>M  年中的月份 
  68.      * <p>w  年中的周数 
  69.      * <p>W  月份中的周数 
  70.      * <p>D  年中的天数  
  71.      * <p>d  月份中的天数 
  72.      * <p>F  月份中的星期 
  73.      * <p>E  星期中的天数 
  74.      * <p>a  Am/pm 标记 
  75.      * <p>H  一天中的小时数(0-23) 
  76.      * <p>k  一天中的小时数(1-24) 
  77.      * <p>K  am/pm 中的小时数(0-11) 
  78.      * <p>h  am/pm 中的小时数(1-12) 
  79.      * <p>m  小时中的分钟数 
  80.      * <p>s  分钟中的秒数 
  81.      * <p>S  毫秒数 
  82.      * <p>z  时区 
  83.      * <p>Z  时区 
  84.      *  
  85.      * 格式:"yyyy.MM.dd G 'at' HH:mm:ss z"。 
  86.      * 时间:2001.07.04 AD at 12:08:56 PDT 。 
  87.      * 注意:格式中的字母对大小写敏感。 
  88.      * @return 返回字符串形式的字符串时间。形如:19:56:43。 
  89.      */  
  90.     public static String getSystemTime()  
  91.     {  
  92.         //获取系统时间,为日历对象。  
  93.         Calendar calendar = Calendar.getInstance();  
  94.           
  95.         //定义时间格式。  
  96.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");  
  97.           
  98.         //从日历对象中获取Date,组合成指定时间格式的字符串。  
  99.         String time = simpleDateFormat.format(calendar.getTime());  
  100.           
  101.         return time;  
  102.     }  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:142583次
    • 积分:1876
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:179篇
    • 译文:1篇
    • 评论:15条
    最新评论