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