This commit is contained in:
xxj
2020-12-29 11:59:27 +08:00
parent 692cb5a3be
commit d47b08dd41
8 changed files with 65 additions and 59 deletions

View File

@@ -42,8 +42,8 @@ func IsRunTesting() bool {
return false
}
// IsIdCard 判断是否是18或15位身份证
func IsIdCard(cardNo string) bool {
// IsIDCard 判断是否是18或15位身份证
func IsIDCard(cardNo string) bool {
//18位身份证 ^(\d{17})([0-9]|X)$
if m, _ := regexp.MatchString(`(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)`, cardNo); !m {
return false

View File

@@ -5,7 +5,6 @@ import (
"encoding/gob"
"encoding/hex"
"encoding/json"
"fmt"
"regexp"
"strconv"
"strings"
@@ -16,6 +15,7 @@ import (
"github.com/xxjwxc/public/mylog"
)
// RawBytes ...
type RawBytes []byte
var errNilPtr = errors.New("destination pointer is nil")
@@ -23,13 +23,14 @@ var errNilPtr = errors.New("destination pointer is nil")
func cloneBytes(b []byte) []byte {
if b == nil {
return nil
} else {
c := make([]byte, len(b))
copy(c, b)
return c
}
c := make([]byte, len(b))
copy(c, b)
return c
}
// AsString 转成string
func AsString(src interface{}) string {
switch v := src.(type) {
case string:
@@ -56,10 +57,10 @@ func AsString(src interface{}) string {
return string(b)
}
}
return fmt.Sprintf("%v", src)
// return fmt.Sprintf("%v", src)
}
//编码二进制
// EncodeByte 编码二进制
func EncodeByte(data interface{}) ([]byte, error) {
buf := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buf)
@@ -71,14 +72,14 @@ func EncodeByte(data interface{}) ([]byte, error) {
return buf.Bytes(), nil
}
//解码二进制
// DecodeByte 解码二进制
func DecodeByte(data []byte, to interface{}) error {
buf := bytes.NewBuffer(data)
dec := gob.NewDecoder(buf)
return dec.Decode(to)
}
//byte转16进制字符串
// ByteToHex byte转16进制字符串
func ByteToHex(data []byte) string {
return hex.EncodeToString(data)
@@ -96,7 +97,7 @@ func ByteToHex(data []byte) string {
// return buffer.String()
}
//16进制字符串转[]byte
// HexToBye 16进制字符串转[]byte
func HexToBye(hexStr string) []byte {
hr, _ := hex.DecodeString(hexStr)
return hr

View File

@@ -4,10 +4,12 @@ import (
"encoding/base64"
)
// Base64Encode base64 编码
func Base64Encode(src []byte) string {
return base64.StdEncoding.EncodeToString(src)
}
// Base64Decode base64 解码
func Base64Decode(src []byte) ([]byte, error) {
return base64.StdEncoding.DecodeString(string(src))
}

View File

@@ -5,7 +5,7 @@ import (
"runtime"
)
//获取函数名
// GetFuncName 获取函数名
func GetFuncName(f interface{}) string {
return runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()
}

View File

@@ -7,7 +7,7 @@ import (
"github.com/axgle/mahonia"
)
//int数组转字符串
// FormatInt int数组转字符串
func FormatInt(list []int, seg string) string {
s := make([]string, len(list))
for i := range list {
@@ -24,7 +24,7 @@ func FormatInt(list []int, seg string) string {
// return s
//}
//截取字符串 不包括str
// Substr 截取字符串 不包括str
func Substr(str string, start, length int) string {
rs := []rune(str)
rl := len(rs)
@@ -54,7 +54,7 @@ func Substr(str string, start, length int) string {
return string(rs[start:end])
}
//查找字符串最小值
// MinimumString 查找字符串最小值
func MinimumString(rest []string) string {
minimum := rest[0]
for _, v := range rest {
@@ -67,7 +67,7 @@ func MinimumString(rest []string) string {
return minimum
}
//字符集转换
// ConvertToString 字符集转换
func ConvertToString(src string, srcCode string, tagCode string) string {
srcCoder := mahonia.NewDecoder(srcCode)
srcResult := srcCoder.ConvertString(src)
@@ -76,18 +76,18 @@ func ConvertToString(src string, srcCode string, tagCode string) string {
return string(cdata)
}
//系统转其他
// ConvertString 系统转其他
func ConvertString(src string, tagCode string) string {
enc := mahonia.NewEncoder(tagCode)
return enc.ConvertString(src)
}
//
// GetGBK 获取gbk
func GetGBK(src string) string {
return string(ConvertString(src, "gbK"))
}
//反转字符串
// Reverse 反转字符串
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {

View File

@@ -6,26 +6,26 @@ import (
"time"
)
//获取本地时间戳
// GetUtcTime 获取本地时间戳
func GetUtcTime(tm time.Time) int64 {
return tm.Unix() //- 8*60*60
}
//当前时间向上取整点
// GetHour 当前时间向上取整点
func GetHour(timestamp int64) int {
// formaTime := time.Format("2006-01-02 15:04:05")
tm := time.Unix(timestamp, 0)
return tm.Hour()
}
//获取offset天的现在时间:注意时区
// GetLastDayCurrentTime 获取offset天的现在时间:注意时区
func GetLastDayCurrentTime(timestamp int64, offset int) time.Time {
tm := time.Unix(timestamp, 0)
yesDay := tm.AddDate(0, 0, 1*offset)
return yesDay
}
//获取给定时间的星期
// GetTimeWeek 获取给定时间的星期
func GetTimeWeek(timestamp int64) int {
tm := time.Unix(timestamp, 0)
weekDay := tm.Weekday().String()
@@ -49,14 +49,14 @@ func GetTimeWeek(timestamp int64) int {
return week
}
//获取向上整时时间
// GetHour0 获取向上整时时间
func GetHour0(timestamp int64) time.Time {
tm := time.Unix(timestamp, 0)
tStr := tm.Format("2006-01-02 15") + ":00:00"
return StrToTime(tStr, "2006-01-02 15:04:05", nil)
}
//获取给定日期的零点时间
// GetDay0 获取给定日期的零点时间
func GetDay0(timestamp int64) time.Time {
tm := time.Unix(timestamp, 0)
tStr := tm.Format("2006-01-02") + " 00:00:00"
@@ -64,13 +64,13 @@ func GetDay0(timestamp int64) time.Time {
return StrToTime(tStr, "2006-01-02 15:04:05", nil)
}
//获取offset 0点时间
// GetUtcDay0 获取offset 0点时间
func GetUtcDay0(now time.Time, timeZone *time.Location) int64 {
tm := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
return tm.Unix()
}
//字符串转时间
// StrToTime 字符串转时间
func StrToTime(tStr, format string, timeZone *time.Location) time.Time {
if len(format) == 0 {
format = "2006-01-02 15:04:05"
@@ -84,21 +84,19 @@ func StrToTime(tStr, format string, timeZone *time.Location) time.Time {
return ti
}
/*
给定字符串时间转换成本地时间戳
*/
// StringTimetoUnix 给定字符串时间转换成本地时间戳
func StringTimetoUnix(timestr string) int64 {
return StrToTime(timestr, "2006-01-02 15:04:05", time.Local).Unix()
}
//获取最近上个星期天的零点日期
// GetWeek0 获取最近上个星期天的零点日期
func GetWeek0(timestamp int64) time.Time {
weekday := GetTimeWeek(timestamp)
tm0 := GetDay0(timestamp)
return tm0.AddDate(0, 0, -1*weekday)
}
//获取最近上个星期天的零点日期
// GetUtcWeek0 获取最近上个星期天的零点日期
func GetUtcWeek0(timestamp int64) int64 {
weekday := GetTimeWeek(timestamp)
tm0 := GetDay0(timestamp)
@@ -107,9 +105,7 @@ func GetUtcWeek0(timestamp int64) int64 {
return tm0.Unix()
}
/*
获取给定时间的当月1号零点时间
*/
// GetMonth0 获取给定时间的当月1号零点时间
func GetMonth0(timestamp int64) time.Time {
tm0 := GetDay0(timestamp)
@@ -118,7 +114,7 @@ func GetMonth0(timestamp int64) time.Time {
return tm0
}
//整点执行操作
// TimerByHour 整点执行操作
func TimerByHour(f func()) {
for {
now := time.Now()
@@ -132,42 +128,46 @@ func TimerByHour(f func()) {
}
}
//时间戳转换为time
// UnixToTime 时间戳转换为time
func UnixToTime(timestamp int64) time.Time {
return time.Unix(timestamp, 0)
}
//获取本地时间
// GetLocalTime 获取本地时间
func GetLocalTime(tm time.Time) time.Time {
local, _ := time.LoadLocation("Local")
return tm.In(local)
//return tm.Add(8 * 60 * 60 * time.Second)
}
//获取系统时间的格式
// GetSysTimeLayout 获取系统时间的格式
func GetSysTimeLayout() string {
t := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
strLayout := strings.Replace(t.String(), "+0000 UTC", "", -1)
return strings.TrimSpace(strLayout)
}
func FormatTime(tm time.Time, for_str string) string {
return tm.Format(for_str)
// FormatTime 格式化时间
func FormatTime(tm time.Time, forStr string) string {
return tm.Format(forStr)
}
// GetTimeStr 获取时间字符串
func GetTimeStr(tm time.Time) string {
return FormatTime(tm, "2006-01-02 15:04:05")
}
// GetDayStr 获取日期字符串
func GetDayStr(tm time.Time) string {
return FormatTime(tm, "2006-01-02")
}
//json marsh 重写
// Time json marsh 重写
type Time struct {
time.Time
}
// UnmarshalJSON ...
func (t *Time) UnmarshalJSON(data []byte) (err error) {
tmp := string(data)
str := `"2006-01-02 15:04:05"`
@@ -183,11 +183,13 @@ func (t *Time) UnmarshalJSON(data []byte) (err error) {
return
}
// MarshalJSON ...
func (t Time) MarshalJSON() ([]byte, error) {
var stamp = fmt.Sprintf(`"%s"`, t.Format("2006-01-02 15:04:05"))
return []byte(stamp), nil
}
// String ...
func (t Time) String() string {
return t.Format("2006-01-02 15:04:05")
}

View File

@@ -15,6 +15,7 @@ import (
"github.com/xxjwxc/public/errors"
)
// Md5Encoder md5 加密
func Md5Encoder(src string) string {
h := md5.New()
h.Write([]byte(src)) // 需要加密的字符串
@@ -23,7 +24,7 @@ func Md5Encoder(src string) string {
return strings.ToUpper(ret)
}
//合并数组
// Copy 合并数组
func Copy(dest []interface{}, src []interface{}) (result []interface{}) {
result = make([]interface{}, len(dest)+len(src))
copy(result, dest)
@@ -31,26 +32,26 @@ func Copy(dest []interface{}, src []interface{}) (result []interface{}) {
return
}
//删除数组
// DeleteArray 删除数组
func DeleteArray(src []interface{}, index int) (result []interface{}) {
result = append(src[:index], src[(index+1):]...)
return
}
//生成32位md5字串
// GetMd5String 生成32位md5字串
func GetMd5String(s string) string {
h := md5.New()
h.Write([]byte(s))
return hex.EncodeToString(h.Sum(nil))
}
//获取总页数
// GetTotalPageNum 获取总页数
func GetTotalPageNum(pageSize, totalCount int) int {
return (totalCount + pageSize - 1) / pageSize
}
//生成32位guid
func UniqueId() string {
// UniqueID 生成32位guid
func UniqueID() string {
b := make([]byte, 48)
if _, err := io.ReadFull(crand.Reader, b); err != nil {
return ""
@@ -67,12 +68,12 @@ func DeleteSlice(slice interface{}, index int) (interface{}, error) {
}
if length-1 == index {
return sliceValue.Slice(0, index).Interface(), nil
} else {
return reflect.AppendSlice(sliceValue.Slice(0, index), sliceValue.Slice(index+1, length)).Interface(), nil
}
return reflect.AppendSlice(sliceValue.Slice(0, index), sliceValue.Slice(index+1, length)).Interface(), nil
}
//查找int最小值
// MinimumInt 查找int最小值
func MinimumInt(rest []int) int {
minimum := rest[0]
for _, v := range rest {
@@ -113,7 +114,7 @@ func MinimumInt(rest []int) int {
// }
// }
//按字典顺序排序
// DictSort 按字典顺序排序
func DictSort(res []string) (str string) {
sort.Strings(res)
if len(res) > 0 {
@@ -124,7 +125,7 @@ func DictSort(res []string) (str string) {
return
}
//SHA1加密
// Sha1Encrypt SHA1加密
func Sha1Encrypt(str string) string {
h := sha1.New()
h.Write([]byte(str))
@@ -132,7 +133,7 @@ func Sha1Encrypt(str string) string {
return fmt.Sprintf("%x", bs)
}
//中文字符切割时有问题。采用此方式不会有问题
// GetUtf8Str 中文字符切割时有问题。采用此方式不会有问题
func GetUtf8Str(str string) []rune {
return []rune(str)
}

View File

@@ -8,6 +8,7 @@ import (
"path/filepath"
)
// IsZip 是否zip文件
func IsZip(zipPath string) bool {
f, err := os.Open(zipPath)
if err != nil {
@@ -23,6 +24,7 @@ func IsZip(zipPath string) bool {
return bytes.Equal(buf, []byte("PK\x03\x04"))
}
// Unzip 解压
func Unzip(archive, target string) error {
reader, err := zip.OpenReader(archive)
if err != nil {
@@ -73,7 +75,7 @@ func Unzip(archive, target string) error {
return nil
}
//压缩文件
// Compress 压缩文件
//files 文件数组可以是不同dir下的文件或者文件夹
//dest 压缩文件存放地址
func Compress(files []*os.File, dest string) error {
@@ -117,9 +119,7 @@ func compress(file *os.File, prefix string, zw *zip.Writer) error {
}
} else {
header, err := zip.FileInfoHeader(info)
if len(prefix) == 0 {
header.Name = header.Name
} else {
if len(prefix) != 0 {
header.Name = prefix + "/" + header.Name
}
if err != nil {