Я ищу способ преобразования выражения cron из одного часового пояса в другой часовой пояс.
Например, мой пользователь веб-клиента GMT + 1200, а мой сервер - GMT + 0800, а пользовательский параметр 02:10 для выполнения задачи каждый вторник и четверг, выражение cron будет «0 10 2 3, 5 *?», и я использовал код, как показано ниже, он может получить текущее время пожара на часовом поясе пользователя
Преобразование выражения cron из одного часового пояса в другое
CronExpression expr = new CronExpression("0 10 2 3,5 * ?");
System.out.println(expr.getNextValidTimeAfter(new Date()));
System.out.println(expr.getTimeZone());
System.out.println(expr.getExpressionSummary());
System.out.println("=======");
TimeZone tz = TimeZone.getTimeZone("GMT+1200");
expr.setTimeZone(tz);
System.out.println(expr.getNextValidTimeAfter(new Date()));
System.out.println(expr.getTimeZone());
System.out.println(expr.getExpressionSummary());
getNextValidTimeAfter напечатает пн Фев 02 22:10:00 CST 2015, который после setTimeZone (tz); однако getExpreesionSummary или даже getCronExpression() все равно будет «0 10 2 3,5 *?», где я хочу получить строку будет «0 10 22 2,4 *?» и затем я могу сохранить в БД для следующего пожара времени, а также другого пользователя часового пояса для запроса настройки (из-за этого ему нужно будет преобразовать «0 10 22 2,4 *?» в часовой пояс этого пользователя)
Любая помощь оценивается
У вас есть решение для этого? У меня тоже такая же проблема. –
@JyotiRanjan, я до сих пор не нашел для этого решения. Я сделал разговор вручную. – Bruce
хорошо, я дам вам знать, найду ли что-нибудь или код для этого преобразования в java. В моем случае, если это делается js/jquery, то и это нормально. –