java - 阻止 "java.util.TimeZone"夏令时

标签 java cron timezone quartz-scheduler

我正在尝试安排一封提醒电子邮件,该电子邮件必须在 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 类吗?您能建议任何替代方案吗?

最佳答案

如果您想要固定偏移时区,只需使用 SimpleTimeZone :

TimeZone tz = new SimpleTimeZone(TimeUnit.SECONDS.toMillis(-420), "id");

关于java - 阻止 "java.util.TimeZone"夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815755/

相关文章:

java - 如何使类(class)特化有哪些选择或最佳实践?

java - 设置日历实例的时间

linux - 时区数据库和 DST

不同时区的 PostgreSQL 转储和恢复

java - 解析 getCurrentUser 信息未更新

java - 使用字符串更新 .txt 文件

curl - 什么是 curl 错误 52 "empty reply from server"?

php - 在 sentora 网站面板 w.r.t Cpanel [控制面板] 中设置 crons

ruby-on-rails - 如何编写 Rake 任务将数据导入 Rails 应用程序?

php - 将MySQL日期时间转换为不同时区