目标:创建一个一致的 cron 表达式,该表达式在 PDT 的每个星期日午夜触发,而无需每年更改两次表达式。
限制:无法指定时区。 所有表达式均基于 UTC
背景:AWS CloudWatch 事件支持 cron 表达式,但默认为 UTC。
我相信UTC
很容易PST
0 8 * ? SUN *
但是,如果我需要它PDT
怎么办?
根据工作的性质,这里有一个潜在的黑客:
0 7,8 * ? SUN *
仅当触发的作业具有足够的内部逻辑功能,可以自行决定是否应继续执行时,这才有效。
当作业启动时,它必须有一种内部方法来检查从系统时间转换为America/Los_Angeles
(或在运行时可用的任何时区库中可能调用的任何时间(后的当前时间,以确定该时区中的当前时间是否足够接近午夜 - 在这种情况下,它应该正常进行 - 或者当前时间是否更接近午夜+/- ~1小时, 在这种情况下,它应该安静地终止而不做任何工作。 作业在每个指定日期生成两次,但两个调用中的一个很快完成,因此使用的资源很少。