Java 将cron表达式从一个时区转换为另一个时区
我正在寻找一种将cron表达式从一个时区转换为另一个时区的方法 例如,我的web客户端用户是GMT+1200,服务器端是GMT+0800,当用户设置02:10以每周二和周四执行任务时,cron表达式将是Java 将cron表达式从一个时区转换为另一个时区,java,cron,timezone,timezone-offset,Java,Cron,Timezone,Timezone Offset,我正在寻找一种将cron表达式从一个时区转换为另一个时区的方法 例如,我的web客户端用户是GMT+1200,服务器端是GMT+0800,当用户设置02:10以每周二和周四执行任务时,cron表达式将是0 10 2 3,5*?,我使用了如下代码,它可以获取用户时区的当前启动时间 CronExpression expr=新的CronExpression(“0 10 2 3,5*?”); System.out.println(expr.getNextValidTimeAfter(newdate())
0 10 2 3,5*?
,我使用了如下代码,它可以获取用户时区的当前启动时间
CronExpression expr=新的CronExpression(“0 10 2 3,5*?”);
System.out.println(expr.getNextValidTimeAfter(newdate());
System.out.println(expr.getTimeZone());
System.out.println(expr.getExpressionSummary());
System.out.println(“==========”);
时区tz=时区.getTimeZone(“GMT+1200”);
expr.设置时区(tz);
System.out.println(expr.getNextValidTimeAfter(newdate());
System.out.println(expr.getTimeZone());
System.out.println(expr.getExpressionSummary());
getNextValidTimeAfter
将打印Mon Feb 02 22:10:00 CST 2015
,在setTimeZone(tz)之后
,但是GetExpressionSummary
甚至getCronExpression()
仍将是0 10 2 3,5*?
,我想获取字符串的位置将是0 10 22 2,4*?
,然后我可以保存到DB中,以便下次fire和另一个时区用户查询设置(当然,这需要将0 10 22 2,4*?
转换为此用户的时区)
如果您愿意保留相同的cron表达式,但根据日期时区进行上下文计算(以便用户和服务器端根据其相同表达式的时区获得下一次执行),请提供任何帮助,您可以使用,它提供了此类功能。自3.1.1版以来,所有下一次/上一次执行计算都与时区相关 它们在文档中提供了一个示例:
//Get date for last execution
DateTime now = DateTime.now();
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * * *"));
DateTime lastExecution = executionTime.lastExecution(now));
//Get date for next execution
DateTime nextExecution = executionTime.nextExecution(now));
nextExecution值将针对与参考日期(现在)相同的时区进行计算。如果您愿意保留相同的cron表达式,但根据日期时区进行上下文计算(以便用户和服务器端根据其相同表达式的时区获得下一次执行),您可以使用,它提供了此类功能。自3.1.1版以来,所有下一次/上一次执行计算都与时区相关 它们在文档中提供了一个示例:
//Get date for last execution
DateTime now = DateTime.now();
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * * *"));
DateTime lastExecution = executionTime.lastExecution(now));
//Get date for next execution
DateTime nextExecution = executionTime.nextExecution(now));
下一个执行值将在与参考日期(现在)相同的时区计算.你有没有找到解决方案?我也有同样的问题。@JyotiRanjan,我还没有找到解决方案。我已经手动进行了对话。好的,如果我在java中找到了用于此转换的内容或代码,我会告诉你。在我的情况下,如果它是由js/jquery完成的,那么也没问题。你有任何解决方案吗?我是我也有同样的问题。@JyotiRanjan,我仍然没有找到任何解决方案。我已经手动进行了对话。好的,如果我在java中找到了用于此转换的内容或代码,我会告诉您。在我的情况下,如果是由js/jquery完成的,那么也可以。