Go 日期时间包装器:15条更便捷的时间处理
package main
import (
"fmt"
"time"
)
// 定义一个包装time.Time的结构体
type MyTime struct {
time.Time
}
// 实现AddDate方法,添加年、月、日
func (mt *MyTime) AddDate(years int, months int, days int) MyTime {
return MyTime{mt.Time.AddDate(years, months, days)}
}
// 实现AddDuration方法,添加时间段
func (mt *MyTime) AddDuration(d time.Duration) MyTime {
return MyTime{mt.Time.Add(d)}
}
// 实现Format方法,格式化时间
func (mt *MyTime) Format(layout string) string {
return mt.Time.Format(layout)
}
// 实现IsBefore方法,判断是否在另一个时间之前
func (mt *MyTime) IsBefore(other MyTime) bool {
return mt.Time.Before(other.Time)
}
// 实现IsAfter方法,判断是否在另一个时间之后
func (mt *MyTime) IsAfter(other MyTime) bool {
return mt.Time.After(other.Time)
}
func main() {
now := MyTime{time.Now()}
fmt.Println("当前时间:", now.Format("2006-01-02 15:04:05"))
tomorrow := now.AddDate(0, 0, 1)
fmt.Println("明天时间:", tomorrow.Format("2006-01-02"))
nextWeek := now.AddDuration(7 * 24 * time.Hour)
fmt.Println("下周时间:", nextWeek.Format("2006-01-02"))
fmt.Println("现在是否在明天之前:", now.IsBefore(tomorrow))
fmt.Println("下周是否在现在之后:", nextWeek.IsAfter(now))
}
这段代码首先定义了一个结构体MyTime
来包装time.Time
,然后为这个结构体实现了一系列方法来简化时间的操作和检查。它展示了如何添加年、月、日(AddDate
)、添加特定的时间段(AddDuration
)、格式化时间(Format
)以及比较时间(IsBefore
和IsAfter
)。这些方法使得时间的处理更加直观和方便。
评论已关闭