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: } } }