goProject/.svn/pristine/45/45a09743370b259aefd77d242d38fd7769811a8d.svn-base
2025-01-06 16:21:36 +08:00

103 lines
2.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package timeUtil
import (
"fmt"
"strconv"
"strings"
"time"
)
// 将字符串转换为标准的时间格式
// str输入格式为2015-10-25T17:07:30
// 返回值:
// 标准时间格式对象
// 错误对象
func ConverToStandardFormat(str string) (result time.Time, err error) {
newStr := strings.Replace(str, "T", ":", -1)
newStr = strings.Replace(newStr, "-", ":", -1)
newStr = strings.Replace(newStr, ".", ":", -1)
slice := strings.Split(newStr, ":")
slice = slice[:6] // 只取前6位表示年-月-日 时:分:秒)
intSlice := make([]int, len(slice))
for index, item := range slice {
if intItem, err1 := strconv.Atoi(item); err1 != nil {
err = fmt.Errorf("输入字符串的格式错误:%s,转换后的格式为:%s", str, newStr)
return
} else {
intSlice[index] = intItem
}
}
result = time.Date(intSlice[0], time.Month(intSlice[1]), intSlice[2], intSlice[3], intSlice[4], intSlice[5], 0, time.Local)
return
}
// 将时间转换为int类型20160120共8位
// t时间
// 返回值:
// int类型的数字
func ConvertToInt(t time.Time) int {
year := int(t.Year())
month := int(t.Month())
day := int(t.Day())
return year*10e3 + month*10e1 + day
}
// 计算两个时间的日期差值
func SubDay(time1, time2 time.Time) int {
// 当前时间距离00:00:00的秒数
awayFromZero := func(val time.Time) int64 {
hour := val.Hour()
minute := val.Minute()
second := val.Second()
return int64(hour*3600 + minute*60 + second)
}
// 每天对应的秒数
var eachDaySecond int64 = 24 * 3600
// 计算出两个时间对应的00:00:00时的时间戳
unix1 := time1.Unix() - awayFromZero(time1)
unix2 := time2.Unix() - awayFromZero(time2)
if unix1 < unix2 {
return int((unix2 - unix1) / eachDaySecond)
} else {
return int((unix1 - unix2) / eachDaySecond)
}
}
// 解析时间字符串要求时间格式形式为12:59:59 这种形式
// timeStr:时间字符串
// 返回值:
// err:错误信息
// hour:小时值
// minute:分钟值
// second:秒数
func ParseTimeString(timeStr string) (err error, hour int, minute int, second int) {
timeSlice := strings.Split(timeStr, ":")
if len(timeSlice) != 3 {
err = fmt.Errorf("时间字符串格式不正确:%v", timeStr)
return
}
hour, _ = strconv.Atoi(timeSlice[0])
minute, _ = strconv.Atoi(timeSlice[1])
second, _ = strconv.Atoi(timeSlice[2])
return
}
// 获取时间的日期值
// timeVal:时间值
// 返回值:
// time.Time:日期值
func GetDate(timeVal time.Time) time.Time {
year, month, day := timeVal.Date()
return time.Date(year, month, day, 0, 0, 0, 0, timeVal.Location())
}