按照我關(guān)于 cron 作業(yè)和時(shí)區(qū)的問題我想知道在不同時(shí)區(qū)安排事情的最佳方式是什么:運(yùn)行時(shí)間:東京時(shí)間 16 點(diǎn) 30 分然后另一個(gè)運(yùn)行時(shí)間:倫敦時(shí)間上午 10 點(diǎn)另一個(gè)在紐約時(shí)間下午 3 點(diǎn),等等。我有多個(gè) cron 作業(yè),就像我需要運(yùn)行的那些作業(yè)一樣,我以前發(fā)布的代碼似乎沒有削減它。我不知道最好的方法是什么,因?yàn)樗鼞?yīng)該獨(dú)立于服務(wù)器時(shí)間,所以使用 UTC 時(shí)間并不能真正減少它。package mainimport (? ? "fmt"? ? "github.com/robfig/cron"? ? "os"? ? "os/signal"? ? "time")func helloWorld() {? fmt.Println("hello world")}func main() {? ? s, err1 := cron.Parse("30 10 * * *")? ? fmt.Println(err1)? ? l, err := time.LoadLocation("Asia/Tokyo")? ? fmt.Println(err)? ? c := cron.NewWithLocation(l)? ? c.Schedule(s, cron.FuncJob(helloWorld))? ? c.Start()? ? sig := make(chan os.Signal)? ? signal.Notify(sig, os.Interrupt, os.Kill)? ? <-sig}在我上一篇文章之后,我發(fā)現(xiàn)您可以通過這種方式檢查調(diào)度程序:? ? test := c.Entries()? ? log.Println(test[0].Schedule)? ? log.Println(test[0].Next)? ? log.Println(test[0].Prev)并得到結(jié)果(前 2 個(gè) nils 是錯(cuò)誤的“處理”):? ? <nil>? ? <nil>? ? 2019/05/30 00:59:21 &{1073741824 1024 9223372036871553023 9223372041149743102 9223372036854783998 9223372036854775935}? ? 2019/05/30 00:59:21 2019-05-30 01:10:30 +0900 JST? ? 2019/05/30 00:59:21 0001-01-01 00:00:00 +0000 UTC您可以看到它計(jì)劃在日本時(shí)間 (JST) 01:10:30 運(yùn)行,而不是我預(yù)期的上午 10:30 JST。任何人都知道發(fā)生了什么。我需要為超過 70 個(gè)時(shí)區(qū)執(zhí)行此操作。
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
如文檔?中所述,s, err1 := cron.Parse("30 10 * * *")
創(chuàng)建一個(gè)新的 cron 作業(yè),每小時(shí)準(zhǔn)確執(zhí)行 10 分鐘和 30 秒。
因?yàn)槟臅r(shí)間是2019/05/30 00:59:21
下一個(gè)可用時(shí)段,所以與說(shuō)明的完全一樣01:10:30 +0900 JST
。
要?jiǎng)?chuàng)建每天在當(dāng)?shù)貢r(shí)間 10:30 執(zhí)行的新作業(yè),請(qǐng)s, err1 := cron.Parse("0 30 10 * *")
改用。要快速概覽,請(qǐng)使用文檔中的預(yù)定義計(jì)劃,它會(huì)將其顯示在一個(gè)漂亮的表格中。
- 1 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)
0/150
提交
取消