package tools import ( "kefu/types" "time" ) // 当前时间戳/秒 func Now() int64 { return time.Now().Unix() } func GetNowTime() string { return time.Now().Format("2006-01-02 15:04:05") } // 时间戳转时间字符串 func IntToTimeStr(sourceTime int64, formatStr string) string { return time.Unix(sourceTime, 0).Format(formatStr) } // 时间戳转时间类型 func IntToTime(sourceTime int64) time.Time { return time.Unix(sourceTime, 0) } // 时间字符串转时间戳 func TimeStrToInt(sourceTime string) int64 { timeLayout := "2006-01-02 15:04:05" //转化所需模板 loc, _ := time.LoadLocation("Local") //重要:获取时区 theTime, _ := time.ParseInLocation(timeLayout, sourceTime, loc) //使用模板在对应时区转化为time.time类型 return theTime.Unix() } // 时间字符串转时间类型 func TimeStrToTime(sourceTime string) time.Time { timeLayouts := []string{ "2006-01-02 15:04:05", "2006-01-02", // 添加更多的时间格式模板,按照需要进行扩展 } var parsedTime time.Time var err error for _, layout := range timeLayouts { parsedTime, err = time.Parse(layout, sourceTime) if err == nil { break } } return parsedTime } // 获取多长天之前的日期 func GetPastDate(daysAgo int) string { pastDate := time.Now().AddDate(0, 0, -daysAgo) return pastDate.Format("2006-01-02 15:04:05") } // 格式化日期 func Date(layout string, timeStr string) string { return TimeStrToTime(timeStr).Format(layout) } // 格式化日期 func DateDefault(myTime time.Time) string { return myTime.Format("2006-01-02 15:04:05") } // 格式化日期 func DateFormat(layout string, timeStr types.Time) string { return timeStr.Format(layout) } // 是否在工作时间 func IsWorkTime(weekDays []string, monringRange, afternoonRange, otherRange []string) bool { if !IsInWeekRange(weekDays) { return false } if len(monringRange) == 2 && IsInTimeRange(monringRange[0], monringRange[1]) { return true } if len(afternoonRange) == 2 && IsInTimeRange(afternoonRange[0], afternoonRange[1]) { return true } if len(otherRange) == 2 && IsInTimeRange(otherRange[0], otherRange[1]) { return true } return false } // 判断当前星期几是否在给定的星期范围内容,["星期一", "星期二"] func IsInWeekRange(weekDays []string) bool { // 获取当前时间 now := time.Now() // 获取当前星期几 weekday := now.Weekday() chineseWeekdays := []string{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"} nowWeekDay := chineseWeekdays[weekday] if !IsInArray(nowWeekDay, weekDays) { return false } return true } // 判断当前时间(小时分钟)是否在给定范围内 func IsInTimeRange(startTime, endTime string) bool { // 获取当前时间 now := time.Now() // 获取当前时间的小时和分钟 currentHour, currentMinute, _ := now.Clock() startHour, startMinute, _ := GetHourAndMinute(startTime) endHour, endMinute, _ := GetHourAndMinute(endTime) // 判断当前时间是否在给定范围内 if currentHour > startHour && currentHour < endHour { return true } else if currentHour == startHour && currentMinute >= startMinute { return true } else if currentHour == endHour && currentMinute < endMinute { return true } return false } // 获取给定时间字符串的小时和分钟 func GetHourAndMinute(timeStr string) (int, int, error) { // 定义时间格式 layout := "2006-01-02 15:04" // 将字符串解析为时间 t, err := time.Parse(layout, timeStr) if err != nil { return 0, 0, err } // 获取小时和分钟 hour := t.Hour() minute := t.Minute() return hour, minute, nil }