所有 详细使用 在 示 例 中 查看
time.Now()
time.Now().Add(time.Second * 10)
time.Now().Add(time.Second * -10)
// 时间点 的 比 较🆚
func TestTimeCompare(t *testing.T) {
timeOne := time.Now()
timeTwo := time.Now().Add(time.Second * 1000)
// 比 较两个时间是否 相等
t.Log(timeOne.Equal(timeTwo))
// 判断 时间One 是 否 在 时间Two之 后
t.Log(timeOne.After(timeTwo))
// 判断 时间One是 否 在 时间Two之 前
t.Log(timeOne.Before(timeTwo))
// 判断 时间之 间的差 值
t.Log(timeTwo.Sub(timeOne))
// 判断 当 前 时间和 指定 时间的 差 值 可 以间接 用 来 计算程 序 的 执行时间
t.Log(time.Since(timeOne))
}
// 获取时间戳
func TestTimeUnix(t *testing.T) {
// 秒 级时间戳
t.Log(time.Now().Unix())
// 毫秒级时间戳
t.Log(time.Now().UnixMilli())
// 微妙 级时间戳
t.Log(time.Now().UnixMicro())
// 纳秒时间戳
t.Log(time.Now().UnixNano())
}
// 时间的 格式 化 和 解析
func TestFormat(t *testing.T) {
// 按如下 格式 输出当 前 时间:
// 12小 时制 2006-01-02 03:04:05 PM
t.Log(time.Now().Format("2006-01-02 03:04:05 PM"))
// 24小 时制
t.Log(time.Now().Format("2006-01-02 15:04:05"))
// 月 份日期 中 不 带前导0
t.Log(time.Now().Format("2006-1-2 15:04:05"))
// 时分秒 中 不 带前导0
t.Log(time.Now().Format("2006-01-02 3:4:5"))
// 解析 2023-04-10 21:32:38 解析 字 符 串
parse, err := time.Parse("2006-01-02 15:04:05", "2023-04-10 21:32:38")
if err != nil {
t.Error(err)
}
t.Log(parse)
}
// 时区的 处理
func TestLoc(t *testing.T) {
// 创建时区
location, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
t.Fatal(err)
}
// 指定 时区
f := time.Now().In(location).Format("2006-01-02 15:04:05")
t.Log(f)
// 设置默 认时区
time.Local = location
}
// 时间的 常 量定 义
func TestConst(t *testing.T) {
// 时
t.Log(time.Hour)
// 分
t.Log(time.Minute)
// 秒
t.Log(time.Second)
}
// 如果我 不 设置时区,默 认的时区是 哪里?
func TestDefaultLoc(t *testing.T) {
// 设置本地 时区,并且返 回 本地 时间
t.Log(time.Now().Local())
// 创建时区
location, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
t.Fatal(err)
}
// 设置默 认时区
time.Local = location
// 获取设置的 时区
t.Log(time.Now().Location())
// out: Asia/Shanghai
}
const Format = "2006-01-02 15:04:05"
/**
字 符 串 和 时间的 转换
*/
// 字 符 串 转换为时间
func TestStringToTime(t *testing.T) {
timeString := "2023-04-12 12:31:54"
parse, err := time.Parse(Format, timeString)
if err != nil {
return
}
t.Log(parse)
}
// 将 字 符 串 按指定 的 时区转换为时间
func TestStringToTimeInLoc(t *testing.T) {
timeString := "2023-04-12 12:31:54"
parse, err := time.ParseInLocation(Format, timeString, time.Local)
if err != nil {
return
}
t.Log(parse)
}
// 定 时器和 睡眠
// 指定 时间后 执行任 务
func TestTimerFuc(t *testing.T) {
timer := time.NewTimer(time.Second * 5)
select {
case v := <-timer.C:
t.Log(v)
}
}
// 指定 时间后 执行函数
func TestTimeFunc1(t *testing.T) {
var wg sync.WaitGroup
wg.Add(1)
timer := time.AfterFunc(time.Second*3, func() {
wg.Done()
t.Log("3秒 后 执行了 此函数 ")
})
wg.Wait()
defer timer.Stop()
}
// 定 时任务
func TestTicker(t *testing.T) {
//
ticker := time.NewTicker(time.Second * 3)
for {
select {
case v := <-ticker.C:
t.Log(v)
}
}
}
// 重 置 定 时器
func TestRest(t *testing.T) {
ticker := time.NewTicker(time.Second * 3)
ticker.Reset(time.Second * 2)
}
// 停止 定 时器
func TestStop(t *testing.T) {
ticker := time.NewTicker(time.Second * 3)
defer ticker.Stop()
}
// 睡眠 指定 时间
func TestSleep(t *testing.T) {
time.Sleep(time.Second)
}
/**
字 符 串 和 时间的 转换
*/
// 字 符 串 转换为时间
func TestStringToTime(t *testing.T) {
timeString := "2023-04-12 12:31:54"
parse, err := time.Parse(Format, timeString)
if err != nil {
return
}
t.Log(parse)
}
// 将 字 符 串 按指定 的 时区转换为时间
func TestStringToTimeInLoc(t *testing.T) {
timeString := "2023-04-12 12:31:54"
parse, err := time.ParseInLocation(Format, timeString, time.Local)
if err != nil {
return
}
t.Log(parse)
}