【发布时间】:2015-03-29 11:37:44
【问题描述】:
我正在寻找一种将 cron 表达式从一个时区转换为另一个时区的方法。
例如,我的 web 客户端用户是 GMT+1200,我的服务器端是 GMT+0800,而用户设置 02:10 每周二和周四执行任务,cron 表达式将是 0 10 2 3,5 * ?,而我已使用如下代码,它可以获取用户时区的当前触发时间
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 将打印Mon Feb 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,我还没有找到任何解决方案。我已经手动进行了对话。
-
好的,如果我在 java 中找到此转换的内容或代码,我会通知您。在我的情况下,如果它是由 js/jquery 完成的,那么也可以。
标签: java cron timezone timezone-offset