• go语言time包简单使用


    时间戳转字符串

    获取当前字符串格式时间

    package main
    import "time"
    import "fmt"
    import "strconv"
    
    func main()  {
        // 时间戳 - 精确至秒
        fmt.Println(time.Now().Unix())
        fmt.Println(time.Now().Local().Unix())
        // 年月日
        fmt.Println(time.Now().Format("2006-01-02"))
        // 年月日 时分秒
        fmt.Println(time.Now().Format("2006-01-02 15:04:05"))  //2019-07-31 13:57:52
    
        // 时间戳转字符串
        i, err := strconv.ParseInt("1405544146", 10, 64)
        if err != nil {
            panic(err)
        }
        tm := time.Unix(i, 0)
        fmt.Println(tm)
        
        // 时间戳转为go格式的时间 - int64(1546926630)也可以 - 必须为int64类型
        // 直接赋值会报错 timeUnix := 1487780010 - cannot use timestamp (type int) as type int64 in argument to time.Unix
        var timeUnix int64 = 1562555859
        fmt.Println(time.Unix(timeUnix,0))
    
        // 获取年月日时分秒
        fmt.Println(time.Now().Year())//
        fmt.Println(time.Now().Month())//
        fmt.Println(time.Now().Day())//
        fmt.Println(time.Now().Hour())//小时
        fmt.Println(time.Now().Minute())//分钟
        fmt.Println(time.Now().Second())//
        fmt.Println(time.Now().Nanosecond())//纳秒
    
    
        // 获取当前时间戳
        fmt.Println(time.Now().Unix())//单位秒
        fmt.Println(time.Now().UnixNano())//单位纳秒
    
        // 将时间戳格式化
        fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    
        // str格式化时间转时间戳
        t := time.Date(2019, 1, 1, 5, 50, 4, 0, time.Local).Unix()
        fmt.Println(t)
    
        // 时间的计算
    
        // 获取今天0点0时0分的时间戳
        currentTime := time.Now()
        startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location())
        fmt.Println(startTime)
        fmt.Println(startTime.Format("2006-01-02 15:04:05"))
    
        // 获取今天23:59:59秒的时间戳
        currentTime = time.Now()
        endTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, currentTime.Location())
        fmt.Println(endTime)
        fmt.Println(endTime.Format("2006/01/02 15:04:05"))
    
        // 获取1分钟之前的时间
        m, _ := time.ParseDuration("-1m")
        result := currentTime.Add(m)
        fmt.Println(result)
        fmt.Println(result.Format("2006/01/02 15:04:05"))
    
        // 获取1小时之前的时间
        m, _ = time.ParseDuration("-1h")
        result = currentTime.Add(m)
        fmt.Println(result)
        fmt.Println(result.Format("2006/01/02 15:04:05"))
    
        // 获取一分钟后的时间
        m, _ = time.ParseDuration("1m")
        result = currentTime.Add(m) 
        fmt.Println(result)
        fmt.Println(result.Format("2006/01/02 15:04:05"))
    
        // 格式化当前时间
        fmt.Printf("%d/%d/%d %d:%d",time.Now().Year(),time.Now().Month(),time.Now().Day(),time.Now().Hour(),time.Now().Minute())
    
        // 时间字符串转为时间对象
        timeLayout := "2006-01-02 15:04:05"
        str := "2017-09-12 12:03:40"
        loc, _ := time.LoadLocation("Local")
        theTime, _ := time.ParseInLocation(timeLayout, str, loc) //使用模板在对应时区转化为time.time类型
        fmt.Println(theTime)  //输出:1546926630
    
        // 时间字符串转时间戳
        fmt.Println(theTime.Unix())
    }

     上面的注意理解,其实无论字符串转时间戳还是时间戳转字符串,都是通过首先获取一个对象。time.Now()进而调用其对应的方法

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main()  {
        // 时间字符串转为时间对象
        timeLayout := "2006-01-02 15:04:05"
        str := "2017-06-12 12:03:40"
        loc, _ := time.LoadLocation("Local")
        timeObj, _ := time.ParseInLocation(timeLayout, str, loc) //使用模板在对应时区转化为time.time类型
        fmt.Println(timeObj)
        t := time.Date(timeObj.Year(), timeObj.Month()-1, 1, 0, 0, 0, 0, time.Local).Format("2006-01-02")
        fmt.Println(t)
    }
    //可以获取月份数字 - 如果为1标识本年度首月
    fmt.Sprintf("%d", timeObj.Month())
    // 获取这个月最后一天
        z := time.Date(timeObj.Year(), timeObj.Month()+1, 0, 23, 59, 59, 0, time.Local).Format("2006-01-02 15:04:05")
        fmt.Println(z)

    获取上一个月或者前一条

    location, err := time.LoadLocation("America/New_York")//"America/New_York"
    if err == nil {
        time.Local = location
    }

    设置时区

    time.Now().Format("2006-01-02 15:04:05")

    会改变以上的输出(会输出美国纽约时区的时间戳)

    location, err := time.LoadLocation("Asia/Shanghai")
    if err == nil {
       time.Local = location
    }
  • 相关阅读:
    flock对文件锁定读写操作的问题 简单
    hdu 2899 Strange Fuction(二分)
    hdu 2199 Can you solve this equation? (二分)
    poj 3080 Blue Jeans (KMP)
    poj 2823 Sliding Window (单调队列)
    poj 2001 Shortest Prefixes (trie)
    poj 2503 Babelfish (trie)
    poj 1936 All in All
    hdu 3507 Print Article (DP, Monotone Queue)
    fzu 1894 志愿者选拔 (单调队列)
  • 原文地址:https://www.cnblogs.com/xuweiqiang/p/12049420.html
Copyright © 2020-2023  润新知