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

转载 2015年11月18日 15:39:47

获取系统时间

主要类简介

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.     }  

获取系统时间java代码

/**       * 获取系统时间       * @return       */      public String getDate(){                       Cale...
  • zyijava
  • zyijava
  • 2011年10月17日 16:33
  • 561

java代码获取系统时间

有两种方法: 方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: import java.util.*; impor...
  • simplty
  • simplty
  • 2012年05月25日 13:35
  • 4089

linux定时任务,手动执行脚本没有问题,放入定时任务不行

环境变量的问题,在脚本中添加下面一行代码即可,参看:http://bbs.chinaunix.net/thread-2291457-1-1.html source /etc/profile...
  • zhang_Red
  • zhang_Red
  • 2013年09月24日 12:23
  • 8244

javaweb项目启动定时任务的实现

javaweb项目中,有时需要项目启动时开启一个线程,定时完成任务。
  • caodongfang126
  • caodongfang126
  • 2017年02月06日 14:08
  • 960

Linux定时任务crontab执行脚本出错

Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个 脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。这是因为用户登...
  • ling913
  • ling913
  • 2016年05月25日 18:26
  • 1882

定时任务重复执行多次

定时任务,在本地测试执行正常,但是发布到服务器,发现到执行时间,总会重复执行多次; 解决办法:服务器端的server.xml文件host修改配置:autoDeploy="false" deployOn...
  • hanmfy
  • hanmfy
  • 2017年04月28日 14:29
  • 729

linux定时任务crontab 实现如何每秒执行一次!

linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,可以有两个方法实现。 Cron 各项的描述 以下是 crontab 文件的格式: {m...
  • Aaroun
  • Aaroun
  • 2017年12月25日 15:06
  • 298

定时任务编程经历:定时推动异步任务

待续
  • yjclsx
  • yjclsx
  • 2016年04月08日 18:28
  • 1220

查看定时任务的执行情况

cat /var/spool/mail/root
  • dream_ll
  • dream_ll
  • 2017年03月16日 18:07
  • 573

Linux定时任务没有执行问题分析与总结

现在总结一下: 定时任务没有被执行有以下两种可能: 1、被执行的脚本没有执行权限,这种情况 直接授权 chmod 755 xxx.sh 2、被执行的脚本编码有问题,这种情况直接转码    ...
  • xiaoshunzi111
  • xiaoshunzi111
  • 2016年07月26日 14:27
  • 5477
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java代码获取系统时间和执行定时任务
举报原因:
原因补充:

(最多只允许输入30个字)