2014-11-08 124 views
0

我使用的是golang狂欢,我需要每个月的第一个星期一运行一个工作,这个石英克朗规范看起来像这样: 0 0 0? 1/1 MON#1Golang Revel Job spec每个月的第一个星期一

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

回答

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不太熟悉),但是纵观他们的工作如何工作,这会起作用,并不像它会成为性能问题。

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()) 
} 
相关问题