时间相关

时间处理

如果使用 znet 并且设置过时区,那么 ztime 也会默认使用 znet 设置的时区。

使用示例

package main import ( "time" "github.com/sohaha/zlsgo/ztime" "github.com/sohaha/zlsgo/zlog" ) func main(){ // 支持设置时区,如: 东八 ztime.SetTimeZone(8) // 或 new 一个新对象设置 t := ztime.New(8) t.FormatTime(xxx),那么该对象所有函数都是基于东八时区。 now := time.Now() // 时间戳转时间格式 timestamp := now.Unix() zlog.Debug(ztime.FormatTimestamp(timestamp, "Y-m-d H:i:s")) // 时间对象转时间格式 zlog.Debug(ztime.FormatTime(now, "Y-m-d H:i:s")) // 字符串转time.Time zlog.Debug(ztime.Parse("2020-02-04 09:38:19")) // 星期几 zlog.Debug(ztime.Week(now)) // 更多查看 https://godoc.org/github.com/sohaha/zlsgo/ztime }
 

定时任务

小巧能够解析执行大部分日常 crontab 命令。

快速上手

import "github.com/sohaha/zlsgo/ztime/cron" cronTask := cron.New() cronTask.Add("*/5 * * * *", func(){ // 每分钟,执行任务 }) // 任务是在协程内执行 cronTask.Run() // 计算任务下次执行时间 // next, err := cron.ParseNextTime("* * * * * *")
Field name Mandatory? Allowed values Allowed special characters ---------- ---------- -------------- -------------------------- Seconds No 0-59 * / , - Minutes Yes 0-59 * / , - Hours Yes 0-23 * / , - Day of month Yes 1-31 * / , - L W Month Yes 1-12 or JAN-DEC * / , - Day of week Yes 0-6 or SUN-SAT * / , - L # Year No 1970–2099 * / , - 星号(*) 星号表示cron表达式匹配该字段的所有值。例如,在第四个字段(月)中使用星号表示每个月。 斜线(/) 斜线表示范围的增量。例如3-59/15,在分钟字段中,指示小时的第三分钟,此后每15分钟指示一次。 逗号(,) 逗号用于分隔列表中的项目。 连字号(-) 连字符定义范围。例如,2000年至2010年表示公元2000年至2010年之间的每一年(包括该年)。 大号(L) L代表“最后”。在“星期几”字段中使用时,它允许您指定诸如5L给定月份的“最后一个星期五”之类的结构。 哈希(#) #允许在“星期几”字段中输入,并且后面必须跟一个1到5之间的数字。它允许您指定结构,例如给定月份的“第二个星期五”。 如果仅存在六个字段,0则在前面加上第二个字段,即* * * * * 2013内部变为0 * * * * * 2013。 如果仅存在五个字段,则在0第二个字段前添加一个通配符年份字段,即在* * * * Mon内部变为0 * * * * Mon *。 星期几字段的域是[0-7]而不是[0-6],其中7是星期日(如0)。