goxkit
Go 常用工具库合集,提供时间处理、随机数生成、数据类型转换等轻量级扩展包。
安装
go get github.com/moon-ryan/goxkit
功能模块
timex
时间处理扩展包,封装常用日期时间计算与格式化方法。
常量
| 常量 |
格式 |
LayoutDate |
2006-01-02 |
LayoutTime |
15:04:05 |
LayoutDateTime |
2006-01-02 15:04:05 |
LayoutISO8601 |
2006-01-02T15:04:05Z07:00 |
LayoutRFC3339 |
time.RFC3339 |
格式化
t := time.Now()
timex.FormatDate(t) // 2026-07-19
timex.FormatTime(t) // 10:30:00
timex.FormatDateTime(t) // 2026-07-19 10:30:00
timex.FormatISO8601(t) // 2026-07-19T10:30:00+08:00
timex.WeekdayName(t) // 周六
timex.WeekdayNameEN(t) // Saturday
解析
t, err := timex.ParseDate("2026-07-19")
t, err = timex.ParseDateTime("2026-07-19 10:30:00")
t, err = timex.ParseISO8601("2026-07-19T10:30:00+08:00")
t = timex.MustParseDateTime("2026-07-19 10:30:00")
// 自动识别常见格式
t, err = timex.Parse("2026-07-19 10:30")
日期计算
now := time.Now()
timex.Today()
timex.Yesterday()
timex.Tomorrow()
timex.StartOfDay(now)
timex.EndOfDay(now)
timex.StartOfWeek(now) // 本周一 00:00:00
timex.EndOfWeek(now) // 本周日 23:59:59
timex.StartOfMonth(now)
timex.EndOfMonth(now)
timex.StartOfYear(now)
timex.EndOfYear(now)
timex.AddDays(now, 7)
timex.AddMonths(now, 1)
timex.AddYears(now, 1)
timex.NextMonday(now)
timex.PrevMonday(now)
timex.DaysInMonth(now)
timex.SubDays(t1, t2)
timex.Age(birthDate)
判断
timex.IsWeekend(t)
timex.IsToday(t)
timex.IsMonday(t)
timex.IsTuesday(t)
timex.IsWednesday(t)
timex.IsThursday(t)
timex.IsFriday(t)
timex.IsSaturday(t)
timex.IsSunday(t)
timex.Between(t, start, end)
时间戳
timex.Timestamp(t)
timex.TimestampMilli(t)
randx
随机数生成工具包,基于标准库 math/rand。
randx.Int(100) // [0, 100)
randx.IntRange(10, 20) // [10, 20)
randx.Float64() // [0.0, 1.0)
randx.Bool() // true / false
randx.String(10) // 10 位随机字母数字字符串
randx.StringWithCharset(8, "abc")
randx.Hex(4) // 8 位十六进制字符串
randx.Choice([]int{1,2,3}) // 随机返回一个元素
s := []int{1,2,3,4,5}
randx.Shuffle(s) // 原地打乱切片
convert
数据类型转换工具包,支持任意类型到常见类型的安全转换。
convert.ToString(v)
n, err := convert.ToInt(v)
n, err := convert.ToInt64(v)
f, err := convert.ToFloat64(v)
b, err := convert.ToBool(v)
convert.MustToInt(v)
convert.MustToInt64(v)
convert.MustToFloat64(v)
convert.MustToBool(v)
测试
go test ./...