Golang Revel Job spec每个月的第一个星期一

时间:2014-11-08 03:14:48

标签: go cron revel

我正在使用golang狂欢,我需要每个月的第一个星期一运行一个工作,石英cron规格看起来像这样: 0 0 0? 1/1 MON#1

但是,robfig / cron不接受这样的规范,因此既不狂欢也没有工作。 任何人都知道如何解决[使用狂欢工作]?

2 个答案:

答案 0 :(得分:2)

对我而言,最简单的解决方案是这样的:

func (e SomeStruct) Run() {
    t := time.Now().Local()
    day_num, _ := t.Day()
    if  day_num <= 7 {
      fmt.Println("Hello, playground")
    }
}

func init() {
    revel.OnAppStart(func() {
    jobs.Schedule("0 0 * * 1",  SomeStruct{})
})

你只需要在星期一运行工作,但在工作本身,检查它是否是你实际做任何事情之前的第一个星期一。可能有一种更好的方法(对Revel不是很熟悉),但是看一看他们的工作如何工作这会起作用,而且这不会是一个性能问题。

答案 1 :(得分:2)

要检查当月的第一个星期一,

package main

import (
    "fmt"
    "time"
)

func IsFirstMonday() bool {
    t := time.Now().Local()
    if d := t.Day(); 1 <= d && d <= 7 {
        if wd := t.Weekday(); wd == time.Monday {
            return true
        }
    }
    return false
}

func main() {
    fmt.Println(IsFirstMonday())
}