时间处理
格式化、解析、范围计算、年龄计算等时间工具
时间处理
xUtil.Timer() 提供常用的时间处理函数,包括格式化、解析、范围计算、年龄计算等。
import xUtil "github.com/xiaolfeng/bamboo-base-go/common/utility"入口函数
func Timer() *pack.Timer预定义格式
const (
TimeFormatDate = "2006-01-02" // 日期格式
TimeFormatDateTime = "2006-01-02 15:04:05" // 日期时间格式
TimeFormatTime = "15:04:05" // 时间格式
TimeFormatISO8601 = "2006-01-02T15:04:05Z07:00" // ISO8601 格式
TimeFormatUnix = "1136239445" // Unix 时间戳格式
)获取当前时间
Now
获取当前时间:
func (t *Timer) Now() time.TimeNowUnix
获取当前 Unix 时间戳(秒):
func (t *Timer) NowUnix() int64NowUnixMilli
获取当前 Unix 时间戳(毫秒):
func (t *Timer) NowUnixMilli() int64now := xUtil.Timer().Now() // time.Time
unix := xUtil.Timer().NowUnix() // 1738387200
milli := xUtil.Timer().NowUnixMilli() // 1738387200000格式化
Format
格式化时间为字符串:
func (t *Timer) Format(time time.Time, layout string) stringFormatNow
格式化当前时间:
func (t *Timer) FormatNow(layout string) stringxUtil.Timer().Format(time.Now(), xUtil.TimeFormatDate) // "2026-02-02"
xUtil.Timer().Format(time.Now(), xUtil.TimeFormatDateTime) // "2026-02-02 15:04:05"
xUtil.Timer().FormatNow(xUtil.TimeFormatDate) // "2026-02-02"
xUtil.Timer().FormatNow("20060102") // "20260202"解析
Parse
解析时间字符串:
func (t *Timer) Parse(layout, value string) (time.Time, error)MustParse
解析时间字符串(失败时 panic):
func (t *Timer) MustParse(layout, value string) time.Timet, err := xUtil.Timer().Parse(xUtil.TimeFormatDate, "2026-02-02")
t := xUtil.Timer().MustParse(xUtil.TimeFormatDate, "2026-02-02")
t := xUtil.Timer().MustParse("20060102", "20260202") // 使用自定义格式FromUnix
从 Unix 时间戳(秒)解析:
func (t *Timer) FromUnix(unix int64) time.TimeFromUnixMilli
从 Unix 时间戳(毫秒)解析:
func (t *Timer) FromUnixMilli(unixMilli int64) time.Timet1 := xUtil.Timer().FromUnix(1738387200) // time.Time
t2 := xUtil.Timer().FromUnixMilli(1738387200000) // time.Time时间判断
IsToday
判断是否为今天:
func (t *Timer) IsToday(t time.Time) boolIsYesterday
判断是否为昨天:
func (t *Timer) IsYesterday(t time.Time) boolIsWeekend
判断是否为周末:
func (t *Timer) IsWeekend(t time.Time) boolxUtil.Timer().IsToday(time.Now()) // true
xUtil.Timer().IsYesterday(yesterday) // true
xUtil.Timer().IsWeekend(saturday) // true时间范围
StartOfDay / EndOfDay
获取当天的开始和结束时间:
func (t *Timer) StartOfDay(t time.Time) time.Time // 00:00:00
func (t *Timer) EndOfDay(t time.Time) time.Time // 23:59:59.999999999StartOfWeek / EndOfWeek
获取本周的开始和结束时间(周一为一周开始):
func (t *Timer) StartOfWeek(t time.Time) time.Time // 周一 00:00:00
func (t *Timer) EndOfWeek(t time.Time) time.Time // 周日 23:59:59.999999999StartOfMonth / EndOfMonth
获取本月的开始和结束时间:
func (t *Timer) StartOfMonth(t time.Time) time.Time // 1日 00:00:00
func (t *Timer) EndOfMonth(t time.Time) time.Time // 月末 23:59:59.999999999示例:
now := time.Now()
// 今天的时间范围
start := xUtil.Timer().StartOfDay(now) // 2026-02-02 00:00:00
end := xUtil.Timer().EndOfDay(now) // 2026-02-02 23:59:59.999999999
// 本周的时间范围
weekStart := xUtil.Timer().StartOfWeek(now) // 2026-02-02 00:00:00(周一)
weekEnd := xUtil.Timer().EndOfWeek(now) // 2026-02-08 23:59:59.999999999(周日)
// 本月的时间范围
monthStart := xUtil.Timer().StartOfMonth(now) // 2026-02-01 00:00:00
monthEnd := xUtil.Timer().EndOfMonth(now) // 2026-02-28 23:59:59.999999999时间差计算
DiffDays
计算天数差:
func (t *Timer) DiffDays(t1, t2 time.Time) intDiffHours
计算小时差:
func (t *Timer) DiffHours(t1, t2 time.Time) float64DiffMinutes
计算分钟差:
func (t *Timer) DiffMinutes(t1, t2 time.Time) float64t1 := time.Now()
t2 := t1.AddDate(0, 0, -7)
xUtil.Timer().DiffDays(t1, t2) // 7
xUtil.Timer().DiffHours(t1, t2) // 168.0
xUtil.Timer().DiffMinutes(t1, t2) // 10080.0年龄计算
Age
根据生日计算年龄:
func (t *Timer) Age(birthday time.Time) intbirthday := xUtil.Timer().MustParse(xUtil.TimeFormatDate, "2000-01-01")
age := xUtil.Timer().Age(birthday) // 26(假设当前是 2026 年)