【发布时间】:2015-08-05 01:44:02
【问题描述】:
我正在尝试安排必须在 8 月和 11 月的第一个星期二发送的提醒电子邮件。当我这样做时,11 月剩余电子邮件的时间将从上午 10:00 更改为上午 11:00(下一个运行时间)。它在 8 月的上午 10:00 正确发射。这可能是因为夏令时。我应该如何防止这种情况发生。
用于设置时区的代码是:
java.util.TimeZone tz = TimeZone.getDefault();
tz = TimeZone.getTimeZone("US/Pacific");
当我使用调试器检查tz 时,它的值是:
sun.util.calendar.ZoneInfo[id="US/Pacific",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone [id=US/Pacific,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode= 3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]]
创建 CRON 作业的代码是
org.quartz.TriggerBuilder builder = newTrigger().withSchedule(cronSchedule("0 0 10 ? AUG,NOV TUE#1").inTimeZone(tz));
我试图找到类似的问题,但没有成功。我应该使用Calendar 类吗?你能建议任何替代方案吗?
【问题讨论】:
-
MiscUtils来自哪里? -
刚刚替换了代码。对不起..
标签: java cron timezone quartz-scheduler