我想每天準確啓動ScheduledExecutorService,每天凌晨12點,Schedule必須在今天22/02/2017 00:00:00(UTC TIME)開始,任何人都可以告訴我是否我的代碼是否正確?ScheduledExecutorService每天晚上12點執行UTC時間
DateTime today = new DateTime().withTimeAtStartOfDay();
DateTime startOfTommorrow = today.plusDays(1).withTimeAtStartOfDay();
Long midnight = startOfTommorrow.getMillis();
long midnights = (midnight/1000)/60;
final DateFormat nextDateTymFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("***********************************");
System.out.println("Schedule Updater "+nextDateTymFormat.format(new Date()));
System.out.println("today "+today);
System.out.println("startOfTommorrow "+startOfTommorrow);
System.out.println("midnight Long "+midnight);
System.out.println("***********************************");
vitalScheduleThread.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("Hello vitalSchService !!"+nextDateTymFormat.format(new Date()));
Thread.currentThread().setName("vitalSchService");
//sendMail();
vitalSchedule.process(springContext);
}
}, midnight , 86400000 , TimeUnit.MILLISECONDS
);
嗨,是的,我的服務器時間總是UTC,稍後我會檢查你的更改,但請檢查我的代碼,並根據我在要求中提到的要求,讓我知道我的代碼是否正確 – kavie
我正在嘗試警告您應該*不*假設您當前的默認時區始終爲UTC。這是一個程序員無法控制的事實。沒有必要依賴當前的默認區域,爲什麼冒這個風險呢?只需通過我的代碼中顯示的'ZoneOffset.UTC',就可以減少一個問題。你說的要求是在午夜UTC運行,而不指定時區是我看到的最大的風險。 –
好吧讓我檢查一下 – kavie