【发布时间】:2014-11-10 06:38:02
【问题描述】:
我已经使用 java 创建了时区特定的计划任务事件。我的代码如下。
Timer timer = new Timer();
Calendar date = Calendar.getInstance(TimeZone.getTimeZone("Asia/Colombo"));
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
timer.schedule(new TimerTask() {
public void run() {
System.out.println("Runs everday morning 12.00 AM");
}
}, date.getTime(), 1000 * 60 * 60 * 24);
但问题是当调用这个方法时它很快就会运行这个任务。我需要每天在亚洲/科伦坡时区 12.00 运行这项工作。该怎么做?
【问题讨论】:
-
服务器上设置了什么时区,运行时间是什么?
-
我现在在本地运行。所以现在亚洲/科伦坡。有什么帮助吗??
-
实际运行时间是什么时候?
-
我将它定义为在使用 web.xml 部署 Web 应用程序时运行现在我需要使该代码在特定时区的凌晨 12 点时第一次执行任务。我认为 date.getTime() 在那个时间运行。有什么问题?
-
顺便说一下,您不应该在 Web 应用程序(Servlet 或 Java EE 环境)中使用 Timer。请查看 [ScheduledExecutorService](docs.oracle.com/javase/7/docs/api/java/util/concurrent/…)。并将 ServletContextListener 视为设置和安排任务的地方。
标签: java timer timezone scheduled-tasks