| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | package utilimport (	"fmt"	"strconv"	"strings"	"time")/*时间常量*/const (	//定义每分钟的秒数	SecondsPerMinute int64 = 60	//定义每小时的秒数	SecondsPerHour int64 = SecondsPerMinute * 60	//定义每天的秒数	SecondsPerDay int64 = SecondsPerHour * 24	LayoutDateFormat = "2006-01-02")/*时间转换函数*/func resolveTime(seconds int64) (day int64, hour int64, minute int64) {	//每分钟秒数	minute = seconds / SecondsPerMinute	//每小时秒数	hour = seconds / SecondsPerHour	//每天秒数	day = seconds / SecondsPerDay	return}func TimeTransformation(unix int64) string {	_, hour, _ := resolveTime(unix)	now := ""	if hour < 10 {		now = fmt.Sprintf("0%d", hour)	} else {		now = fmt.Sprintf("%d", hour)	}	minute := (unix - (hour * SecondsPerHour)) / 60	fmt.Println(minute, (hour * SecondsPerHour))	if minute < 10 {		now = fmt.Sprintf("%s:0%d", now, minute)	} else {		now = fmt.Sprintf("%s:%d", now, minute)	}	seconds := unix - (hour*SecondsPerHour + SecondsPerMinute*minute)	if seconds < 10 {		now = fmt.Sprintf("%s:0%d", now, seconds)	} else {		now = fmt.Sprintf("%s:%d", now, seconds)	}	return now}// TimeBetween 获取指定时间范围内天数// eg startTime => "2023-06-01" endTime => "2023-06-03"// return ["2023-06-01","2023-06-02","2023-06-03"]func TimeBetween(startTime, endTime string) []string {	startDate, _ := time.ParseInLocation(LayoutDateFormat, startTime, time.Local)	endDate, _ := time.ParseInLocation(LayoutDateFormat, endTime, time.Local)	timeList := make([]string, 0)	for endDate.After(startDate) {		timeList = append(timeList, startDate.Format(LayoutDateFormat))		startDate = startDate.AddDate(0, 0, 1)	}	timeList = append(timeList, endTime)	return timeList}// TimeParseToMinutes 时间转换成分钟// durationStr := "00:02:30" => 150func TimeParseToMinutes(timeStr string) int {	durationSlice := strings.Split(timeStr, ":")	if len(durationSlice) < 3 {		return 0	}	s1, _ := strconv.Atoi(durationSlice[0])	s2, _ := strconv.Atoi(durationSlice[1])	s3, _ := strconv.Atoi(durationSlice[2])	newDurationStr := fmt.Sprintf("%dh%dm%ds", s1, s2, s3)	duration, err := time.ParseDuration(newDurationStr)	if err != nil {		fmt.Println("无法解析时间间隔:", err)		return 0	}	return int(duration.Seconds())}// Median 获取切片的中位值func Median(nums []int) float64 {	n := len(nums)	if n%2 == 0 {		return float64(nums[n/2-1]+nums[n/2]) / float64(2)	} else {		return float64(nums[n/2])	}}
 |