|
|
- package schedule
-
- import (
- "fmt"
- "log"
- "reflect"
- "strings"
- "time"
- )
-
- // 获取两个时间点之间的天数
- func GetCrossDays(t1,t2 time.Time)(days int){
- var(
- y1,d1,y2,d2 int
- m1,m2 time.Month
- date1,date2 time.Time
- )
-
- days = 0
- if t1.Unix() >= t2.Unix() {
- return
- }
- y1,m1,d1 = t1.Date()
- y2,m2,d2 = t2.Date()
- date1 = time.Date(y1, m1, d1, 0, 0, 0, 0, time.UTC)
- date2 = time.Date(y2, m2, d2, 0, 0, 0, 0, time.UTC)
- days = int(date2.Sub(date1).Hours() / 24)
- return
- }
-
- // 获取时间点的日期,以年月日字符类型数据返回
- func GetYMDString(t time.Time)(ymd string){
- var (
- y1, d1 int
- m1 time.Month
- )
- y1,m1,d1 = t.Date()
- ymd = fmt.Sprintf("%04d", y1) + fmt.Sprintf("%02d", int(m1)) + fmt.Sprintf("%02d", d1)
- return
- }
-
- // 基于时间单位获取秒数
- func GetTimeUomSeconds(uomId string)(seconds float64){
- seconds = 0
- switch strings.ToUpper(uomId) {
- case TIME_UOM_WEEK:
- seconds = 7 * 24 * 3600
- case TIME_UOM_DAY:
- seconds = 24 * 3600
- case TIME_UOM_HOUR:
- seconds = 3600
- case TIME_UOM_MINUTE:
- seconds = 60
- case TIME_UOM_SECOND:
- seconds = 1
- }
-
- return
- }
-
- // 设置表的更新时间
- func SetTableLastModify(sp interface{},s interface{}, setMode string, lastUser string){
- var (
- hasLastmodify, hasLastuser, hasCreatetime bool
- )
-
- avp := reflect.ValueOf(sp)
- av := reflect.ValueOf(s)
- at := reflect.TypeOf(s)
- // 简单判断下是否为结构体
- if at.Kind() != reflect.Struct {
- log.Printf("s must be a struct")
- return
- }
- // 判断是否有LastModify
- hasLastmodify = false
- hasLastuser = false
- hasCreatetime = false
- avp = reflect.ValueOf(avp.Interface())
-
- for i := 0; i < av.NumField(); i++ {
- if at.Field(i).Name == "Lastmodify" {
- hasLastmodify = true
- }
- if at.Field(i).Name == "Lastuser" {
- hasLastuser = true
- }
- if at.Field(i).Name == "Createtime" {
- hasCreatetime = true
- }
- }
- if hasLastmodify && hasLastuser && hasCreatetime {
- switch setMode {
- case MODIFY_MODE_CREATE:
- f1 := avp.Elem().FieldByName("Createtime")
- f1.Set(reflect.ValueOf(time.Now()))
- f2 := avp.Elem().FieldByName("Lastuser")
- if lastUser != ""{
- f2.Set(reflect.ValueOf(lastUser))
- }else{
- f2.Set(reflect.ValueOf("sys_service"))
- }
-
- case MODIFY_MODE_UPDATE:
- f1 := avp.Elem().FieldByName("Lastmodify")
- f1.Set(reflect.ValueOf(time.Now()))
- f2 := avp.Elem().FieldByName("Lastuser")
- if lastUser != ""{
- f2.Set(reflect.ValueOf(lastUser))
- }else{
- f2.Set(reflect.ValueOf("sys_service"))
- }
-
- case MODIFY_MODE_DELETE:
- }
- }
- }
-
|