go time 包练习

2020-07-11  本文已影响0人  天空蓝雨

go time 包练习

package main  
/* time  包练习 */

import (
    "fmt"
    "time"

)

// 时间字符串的获取
func get_now_time_str(){
    // 主要使用 time.Now()  获取当前时间对象,然后在进行其他的操作
    now := time.Now()
    year_str := now.Year()  // 年字符串
    month_str := now.Month() // 月份
    day_str := now.Day()  // 天
    hour_str := now.Hour()  // 小时
    minute_str := now.Minute()  // 分钟
    second_str := now.Second() // 秒
    fmt.Printf("%d-%02d-%02d %02d:%02d:%02d", year_str, month_str, day_str,
                                             hour_str, minute_str, second_str)  // 拼
接字符串
}


// 获取时间戳
func get_stamp_time(){
    // 时间对象转时间戳
    // timeobj.Unix()   10位秒
    // timeobj.UnixNano()  纳秒
    
    sec_stamp := time.Now().Unix()  
    na_sec_stamp := time.Now().UnixNano()
    fmt.Printf("秒: %d, 纳秒:%d", sec_stamp, na_sec_stamp)
}

// 时间戳转化为时间对象
func stamp2timeboj(){
    stamp := time.Now().Unix()
    time_obj := time.Unix(stamp, 0)  // 第二个参数是精度单位应该是  纳秒好像 1000000000 
是精确到秒了  0 也是精确到秒
    fmt.Printf("%v\n", time_obj)
    fmt.Printf("%02d", time_obj.Month())
}

// 获取星期几
func get_weekday_str(){
    weekday := time.Now().Weekday()
    fmt.Printf("%v", weekday.String())

}

// 时间操作函数
// 添加時間
func add_time(){  
    // func (t Time) Add(d Duration) Time  函數原型 参数是时间单位对象
    now := time.Now()
    one_hour_later := now.Add( -time.Hour )
    fmt.Printf("現在是 %v, 一小時後是 %v", now, one_hour_later)
}

// 相减 获得时间单位对象
func sub_time(){
    // func (t Time) Sub(u Time) Duration 函数参数是 Time 对象
    now := time.Now()
    one_hour_before := now.Sub( time.Now().Add( -time.Hour))  
    fmt.Printf("现在是: %v, 一小时前是: %v", now, one_hour_before)

}

// 判斷兩個時間是不是相同
func equal_time(){
// func (t Time) Equal(u Time) bool   比普通 的比较多了时区地点的比较 
    now1 := time.Now()
    now2 := time.Now()
    fmt.Printf("%v", now1.Equal(now2))  // true   这里 使用  == 也是 true 的

}
// 判断一个时间点是不是在令一个时间点值钱
func is_before(){
    now := time.Now()
    fmt.Printf("%v", now.Before(now.Add( -time.Hour)))
}
// 判断一个时间点是不是在令一个时间点之后
func is_after(){
    now := time.Now()
    fmt.Printf("%v", now.After( now.Add( -time.Hour ))) 

}

// 定时器
func timetick(){
// 定时本质是一个管道
    tick := time.Tick(time.Second)
    for i := range tick{
        fmt.Println(i)
    }

}

// 时间格式化 (这个就有点奇葩了)
func format_time(){
    // 如果想省事还不如自己写呢。 因为你要记住 2006-01-02 15:04:05.000 Mon Jan  这个参
数(go 的生日)
    now := time.Now()
    fmt.Printf("%v \n", now.Format("2006-01-02 15:04:05.000 Mon Jan")) // 24 小时制 :
2020-07-07 19:31:27.972 Tue Jul
    fmt.Printf("%v\n", now.Format("2006-01-02 15:04:05.000 PM Mon Jan")) // 12 小时制 :
 2020-07-07 19:35:35.690 PM Tue Jul  
    fmt.Printf("%v\n", now.Format("2006/01/02 15:04"))  // 2020/07/07 19:37
    fmt.Printf("%v", now.Format("2006/01/02"))  // 2020/07/07


}

// 解析字符串格式的时间
func parse_time_str(){
    // func Parse(layout, value string) (Time, error)
   
    var layout string = "2006-01-02 15:04:05"
    var timeStr string = "2019-12-12 15:22:12"
    timeObj1, _ := time.Parse(layout, timeStr)
    fmt.Println(timeObj1)  // 2019-12-12 15:22:12 +0000 UTC
}


func main(){
    // add_time()
    // sub_time()
    // equal_time()
    // is_before()
    // is_after()
    // timetick()
    // format_time()

}

上一篇 下一篇

猜你喜欢

热点阅读