package stime import ( "fmt" "strconv" "time" ) // 根据指定时间获取后面的若干天工作日列表 // param baseOn 指定基准时间 // param daysNum 获取工作日的数量 func GetWorkDayList(baseOn *time.Time, daysNum int) []time.Time { var timeList []time.Time var basCount = 1 var workDay time.Time for { if len(timeList) == daysNum { break } workDay = baseOn.AddDate(0, 0, basCount) switch workDay.Weekday() { case time.Saturday: basCount += 2 continue case time.Sunday: basCount++ continue default: timeList = append(timeList, workDay) basCount++ } } return timeList } // 根据指定时间获取后面的若干天工作日列表 // param baseOn 指定基准时间 // param daysNum 获取工作日的数量 func GetWorkDayStrList(baseOn *time.Time, daysNum int) []string { var timeList []string var basCount = 1 var workDay time.Time for { if len(timeList) == daysNum { break } workDay = baseOn.AddDate(0, 0, basCount) switch workDay.Weekday() { case time.Saturday: basCount += 2 continue case time.Sunday: basCount++ continue default: timeList = append(timeList, TimeToString(workDay, Format_Normal_YMD)) basCount++ } } return timeList } // 获取时间差文字描述 func GetTimeDifferenceDesc(now *time.Time, before *time.Time) string { if before == nil { return "" } if now.After(*before) { subTimestamp := now.Unix() - before.Unix() day := subTimestamp / (3600 * 24) hour := (subTimestamp - day*3600*24) / 3600 minute := (subTimestamp - day*3600*24 - hour*3600) / 60 second := subTimestamp - day*3600*24 - hour*3600 - minute*60 switch { case day > 0: if hour > 0 { return fmt.Sprintf("%d天%d小时", day, hour) } else { return fmt.Sprintf("%d天", day) } case hour > 0: if minute < 10 { return fmt.Sprintf("%d小时", hour) } else { return fmt.Sprintf("%d小时%d", hour, minute) } case hour == 0 && minute > 0: return fmt.Sprintf("%d分钟", minute) case hour == 0 && minute == 0: return fmt.Sprintf("%d秒", second) } } return "" } // TimeStampToBytes 时间戳转字节 func TimeStampToBytes(stamp int64) []byte { timeStr := strconv.FormatInt(stamp, 2) return []byte(timeStr) }