时间处理
时间格式化、解析、范围计算、年龄计算等
时间处理
xUtil 提供丰富的时间处理函数,包括格式化、解析、范围计算、年龄计算等。
时间格式常量
const (
TimeFormatDate = "2006-01-02"
TimeFormatDateTime = "2006-01-02 15:04:05"
TimeFormatTime = "15:04:05"
TimeFormatISO8601 = "2006-01-02T15:04:05Z07:00"
TimeFormatUnix = "1136239445"
)获取当前时间
Now
获取当前时间:
func Now() time.TimeNowUnix
获取当前 Unix 时间戳(秒):
func NowUnix() int64NowUnixMilli
获取当前 Unix 时间戳(毫秒):
func NowUnixMilli() int64xUtil.Now() // 2026-02-02 10:30:00 +0800 CST
xUtil.NowUnix() // 1770000000
xUtil.NowUnixMilli() // 1770000000000时间格式化
FormatTime
格式化时间:
func FormatTime(t time.Time, layout string) stringFormatNow
格式化当前时间:
func FormatNow(layout string) stringxUtil.FormatNow(xUtil.TimeFormatDate) // "2026-02-02"
xUtil.FormatNow(xUtil.TimeFormatDateTime) // "2026-02-02 10:30:00"
xUtil.FormatNow(xUtil.TimeFormatTime) // "10:30:00"
t := time.Now()
xUtil.FormatTime(t, "2006年01月02日") // "2026年02月02日"时间解析
ParseTime
解析时间字符串:
func ParseTime(layout, value string) (time.Time, error)MustParseTime
解析时间字符串,失败时 panic:
func MustParseTime(layout, value string) time.Timet, err := xUtil.ParseTime(xUtil.TimeFormatDate, "2026-02-02")
t := xUtil.MustParseTime(xUtil.TimeFormatDateTime, "2026-02-02 10:30:00")时间戳转换
UnixToTime
Unix 时间戳(秒)转时间:
func UnixToTime(unix int64) time.TimeUnixMilliToTime
Unix 时间戳(毫秒)转时间:
func UnixMilliToTime(unixMilli int64) time.TimexUtil.UnixToTime(1770000000) // 2026-02-02 10:30:00
xUtil.UnixMilliToTime(1770000000000) // 2026-02-02 10:30:00时间判断
IsToday
检查是否为今天:
func IsToday(t time.Time) boolIsYesterday
检查是否为昨天:
func IsYesterday(t time.Time) boolIsWeekend
检查是否为周末:
func IsWeekend(t time.Time) boolxUtil.IsToday(time.Now()) // true
xUtil.IsYesterday(time.Now().AddDate(0,0,-1)) // true
xUtil.IsWeekend(time.Now()) // 取决于当前日期时间范围
StartOfDay / EndOfDay
获取当天的开始和结束时间:
func StartOfDay(t time.Time) time.Time // 00:00:00
func EndOfDay(t time.Time) time.Time // 23:59:59.999999999StartOfWeek / EndOfWeek
获取本周的开始和结束时间(周一为一周开始):
func StartOfWeek(t time.Time) time.Time // 周一 00:00:00
func EndOfWeek(t time.Time) time.Time // 周日 23:59:59.999999999StartOfMonth / EndOfMonth
获取本月的开始和结束时间:
func StartOfMonth(t time.Time) time.Time // 1日 00:00:00
func EndOfMonth(t time.Time) time.Time // 月末 23:59:59.999999999示例:
now := time.Now()
// 今天的时间范围
start := xUtil.StartOfDay(now) // 2026-02-02 00:00:00
end := xUtil.EndOfDay(now) // 2026-02-02 23:59:59.999999999
// 本周的时间范围
weekStart := xUtil.StartOfWeek(now) // 2026-02-02 00:00:00(周一)
weekEnd := xUtil.EndOfWeek(now) // 2026-02-08 23:59:59.999999999(周日)
// 本月的时间范围
monthStart := xUtil.StartOfMonth(now) // 2026-02-01 00:00:00
monthEnd := xUtil.EndOfMonth(now) // 2026-02-28 23:59:59.999999999时间差计算
DiffDays
计算天数差:
func DiffDays(t1, t2 time.Time) intDiffHours
计算小时差:
func DiffHours(t1, t2 time.Time) float64DiffMinutes
计算分钟差:
func DiffMinutes(t1, t2 time.Time) float64t1 := time.Now()
t2 := t1.AddDate(0, 0, -7)
xUtil.DiffDays(t1, t2) // 7
xUtil.DiffHours(t1, t2) // 168.0
xUtil.DiffMinutes(t1, t2) // 10080.0年龄计算
Age
根据生日计算年龄:
func Age(birthday time.Time) intbirthday := xUtil.MustParseTime(xUtil.TimeFormatDate, "2000-01-01")
age := xUtil.Age(birthday) // 26(假设当前是 2026 年)