110 lines
2.4 KiB
Go
110 lines
2.4 KiB
Go
package utils
|
||
|
||
import (
|
||
"crypto/md5"
|
||
"fmt"
|
||
"math/rand"
|
||
"strconv"
|
||
"time"
|
||
|
||
"github.com/google/uuid"
|
||
)
|
||
|
||
func BoolToInt32(value bool) int32 {
|
||
if value {
|
||
return 1
|
||
}
|
||
return 0
|
||
}
|
||
|
||
// Int32ToBool convert int32 to bool
|
||
func Int32ToBool(value int32) bool {
|
||
return value == 1
|
||
}
|
||
|
||
// ChangColumnIndexToAxis 将列索引转换为Excel列坐标
|
||
func ChangColumnIndexToAxis(intIndexX, intIndexY int) string {
|
||
var arr = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN"}
|
||
intIndexY = intIndexY + 1
|
||
resultY := ""
|
||
coloumnTotal := len(arr)
|
||
for {
|
||
if intIndexY <= coloumnTotal {
|
||
resultY = resultY + arr[intIndexY-1]
|
||
break
|
||
}
|
||
mo := intIndexY % coloumnTotal
|
||
resultY = arr[mo-1] + resultY
|
||
|
||
shang := intIndexY / coloumnTotal
|
||
if shang <= coloumnTotal {
|
||
resultY = arr[shang-1] + resultY
|
||
break
|
||
}
|
||
intIndexY = shang
|
||
}
|
||
return resultY + strconv.Itoa(intIndexX)
|
||
}
|
||
|
||
func IsDiffDay(last, now int64) bool {
|
||
lastYear, lastMonth, lastDay := time.Unix(last, 0).Date()
|
||
nowYear, nowMonth, nowDay := time.Unix(now, 0).Date()
|
||
if lastDay != nowDay || lastMonth != nowMonth || lastYear != nowYear {
|
||
return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
func RandInterval(b1, b2 int32) int32 {
|
||
if b1 == b2 {
|
||
return b1
|
||
}
|
||
|
||
min, max := int64(b1), int64(b2)
|
||
if min > max {
|
||
min, max = max, min
|
||
}
|
||
return int32(rand.Int63n(max-min+1) + min)
|
||
}
|
||
|
||
// 获取utc时间t的days前(负数)或者后(正数)个的0点前时间
|
||
func ZeroDays(t int64, days int) int64 {
|
||
// t += int64(days-1) * 86400
|
||
t += int64(days) * 86400
|
||
year, month, day := time.Unix(t, 0).Date()
|
||
date := time.Date(year, month, day, 23, 59, 59, 0, time.Local)
|
||
return date.Unix()
|
||
}
|
||
|
||
func GetDateNum() uint32 {
|
||
date, _ := strconv.Atoi(time.Now().Format("20060102"))
|
||
return uint32(date)
|
||
}
|
||
|
||
func GetDateNum2(t int64) uint32 {
|
||
date, _ := strconv.Atoi(time.Unix(t, 0).Format("20060102"))
|
||
return uint32(date)
|
||
}
|
||
|
||
// 根据固定的字符串生成uuid
|
||
func GenerateUUID(specificString string) string {
|
||
hash := md5.Sum([]byte(specificString))
|
||
|
||
uniqueUUID := fmt.Sprintf("%x", hash)
|
||
parsedUUID, err := uuid.Parse(uniqueUUID)
|
||
if err != nil {
|
||
return "invalid UUID"
|
||
}
|
||
return parsedUUID.String()
|
||
}
|
||
|
||
// InSlice 判断字符串是否在切片中
|
||
func InSlice(str string, slice []string) bool {
|
||
for _, v := range slice {
|
||
if v == str {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|