func (t *Time) WeeksOfYear() int
func ExampleTime_WeeksOfYear() {
gt1 := gtime.New("2018-01-08 08:08:08")
fmt.Println(gt1.WeeksOfYear())
// Output:
func diff(t1 *gtime.Time, t2 *gtime.Time, t string) int {
diff := math.Abs(float64(t1.Timestamp() - t2.Timestamp()))
switch t {
case "year":
if t1.After(t2) {
t1, t2 = t2, t1 // 交换时间点,确保 t1 在 t2 之前
// 计算月份差
monthsDiff := 0
t1 = t1.AddDate(1, 0, 0) // 增加一个月
for t1.Before(t2) || t1.Equal(t2) {
t1 = t1.AddDate(1, 0, 0) // 增加一个月
monthsDiff++
return monthsDiff
case "month":
if t1.After(t2) {
t1, t2 = t2, t1 // 交换时间点,确保 t1 在 t2 之前
// 计算月份差
monthsDiff := 0
t1 = t1.AddDate(0, 1, 0) // 增加一个月
for t1.Before(t2) || t1.Equal(t2) {
t1 = t1.AddDate(0, 1, 0) // 增加一个月
monthsDiff++
return monthsDiff
case "days":
return int(diff / 86400) // 3600 * 24
case "hours":
return int(diff / 3600 * 24)
case "min":
return int(diff / 60)
case "minutes":
return int(diff / 60)
default: //默认秒
return int(diff)