102 lines
2.2 KiB
Go
102 lines
2.2 KiB
Go
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)
|
|
}
|