[英]Java Spring do scheduled task at a specific time of specific timezone
我正在開發一個使用Spring和Hibernate的網站(該網站是關於股票交易)。
每天凌晨12點左右,我需要取消所有訂單。 目前我的解決方案是使用每小時運行的計划任務:
<task:scheduled ref="ordersController" method="timeoutCancelAllOrders" fixed-delay="60*60*1000" />
然后在方法timeoutCancelAllOrders中,我得到當前時間並檢查,如果它是在晚上11點到12點之間然后執行任務
我看到它的方式,任務計划在我啟動服務器時啟動(我在Eclipse中使用Tomcat),但是當我在在線托管上部署它時(我正在使用Openshift),我不知道什么時候是啟動時間任務時間表。
1:如何更自動地做到這一點? 有什么像myTask.startAt(12AM)嗎?
2:我住在越南,但服務器(Openshift)位於美國,所以這里是我的檢查方式:
Date currentTime = new Date();
DateFormat vnTime = new SimpleDateFormat("hh:mm:ss MM/dd/yyyy ");
vnTime.setTimeZone(TimeZone.getTimeZone("Asia/Ho_Chi_Minh"));
String vietnamCurrentTime = vnTime.format(currentTime);
String currentHourInVietnam = vietnamCurrentTime.substring(0, 2);
System.out.println(currentHourInVietnam);
if(currentHourInVietnam.equals("00")){
// DO MY TASK HERE
}
這看起來很愚蠢。 我該如何改進我的代碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.