开发者

golang时间/时间戳的获取与转换实例代码

开发者 https://www.devze.com 2022-11-30 11:00 出处:网络 作者: 开发运维玄德公
目录1.获取时间1.1当前时间获取1.2获取之前/之后的时间2.时间戳2.1获取当前时间戳2.2时间转时间戳2.2.1方法一2.2.2方法二2.2时间戳转时间3.时间计算3.1...
目录
  • 1. 获取时间
    • 1.1 当前时间获取
    • 1.2 获取之前/之后的时间
  • 2. 时间戳
    • 2.1 获取当前时间戳
    • 2.2 时间 转 时间戳
      • 2.2.1 方法一
      • 2.2.2 方法二
    • 2.2 时间戳转时间
    • 3. 时间计算
      • 3.1 时间加时间段
        • 3.2 计算两时间之差
        • 总结

          1. 获取时间

          1.1 当前时间获取

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
             currentTime := time.Now()                  //当前时间
             currentYear := time.Now().Year()        //当前年
             currentMonth := time.Now().Month()       //当前月
             currentDay := time.Now().Day()         //当前日
             currentHour := time.Now().Hour()        //当前小时小时
             currentMinute := time.Now().Minute()      //当前分钟
             currentSecond := time.Now().Second()      //当前秒
             currentNSecond := time.Now().Nanosecond()  //当前纳秒
             
             //打印结果
             fmt.Println("当前时间是:", currentTime)
             fmt.Println("当前年:", currentYear)
             fmt.Println("当前月:", currentMonth)
             fmt.Println("当前日:", currentDay)
             fmt.Println("当前小时:", currentHour)
             fmt.Println("当前分钟:", currentMinute)
             fmt.Println("当前秒:", currentSecond)
             fmt.Println("当前纳秒:", currentNSecond)
          }
          

          结果输出

          当前时间是: 2021-11-20 21:21:57.67099281python2 +0800 CST m=+0.000043774

          当前年: 2021

          当前月: November

          当前日: 20

          当前小时: 21

          当前分钟: 21

          当前秒: 57

          当前纳秒: 671063850

          1.2 获取之前/之后的时间

          获取1分钟之前的时间戳

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  currentTime := time.Now()
                  m, _ := time.ParseDuration("-1m")
                  result := currentTime.Add(m)
                  fmt.Println(result)
          }
          

          说明

          • time.ParseDuration 将传入的"-1m"转换为“持续时间”类型(time.Duration),输出为-0h1m0s
          • 之后Add() 可对其和时间进行计算

          输出

          2021-11-21 15:42:49.32800253 +0800 CST m=-59.999965656

          获取一小时之前的时间

          方法同上,持续时间可如下转换:

          time.ParseDuration("-1h")

          获取1小时后的时间

          方法同上,持续时间可如下转换

          ime.ParseDuration("1h")

          2. 时间戳

          2.1 获取当前时间戳

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  timeSta编程客栈mp := time.Now().Unix()  //秒为单位的时间戳
                  timeStampN := time.Now().UnixNano()  //纳秒为单位的时php间戳
                  fmt.Print(timeStamp,"\n",timeStampN,"\n")
          }
          

          输出

          1637478374

          1637478374774676883

          2.2 时间 转 时间戳

          2.2.1 方法一

          基本用法

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  timeStamp := time.Date(2021, 11, 20, 23, 34, 10, 0, time.Local).Unix()
                  fmt.Println(timeStamp)
          }
          

          示例:获取当天01:00:00的时间戳

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
             currentYear := time.Now().Year()
             currentMonth := time.Now().Month()
             currentDay := time.Now().Day()
             timeStamp := time.Date(currentYear, currentMonth, currentDay, 1, 0, 0, 0, time.Local).Unix()
             fmt.Println(timeStamp)
          }
          

          2.2.2 方法二

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  timeLayout := "2006-01-02 15:04:05"
                  timeStamp, _ := time.ParseInLocation(timeLayout, "2021-11-20 23:34:10", time.Local)
                  fmt.Println(timeStamp)
          }
          

          2.2 时间戳转时间

          基本使用

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  timeStr := time.Unix(1637420154, 0)
                  fmt.Println(timeStr)
          }
          

          输出

          2021-11-20 22:55:54 +0800 CST

          按模板格式化输出

          注意:模板格式里的时间不能随意更改

          package main
          
          import (
                  "fmt"
            开发者_JS教程      "time"
          )
          
          func main() {
                  timeLayout := "2006-01-02 15:04:05"
                  timeStr := time.Unix(1637420154, 0).Format(timeLayout)
                  fmt.Println(timeStr)
          }
          

          输出

          2021-11-20 22:55:54

          模板输出当前时间

          同上例,只是将当前时间戳转换成了时间字串输出

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  timeStamp := time.Now().Unix()
                  timeLayout := "2006-01-02 15:04:05"
                  timeStr := time.Uphpnix(timeStamp, 0).Format(timeLayout)
                  fmt.Println(timeStr)

          3. 时间计算

          3.1 时间加时间段

          方法

                  currentTime := time.Now()
                  m, _ := time.ParseDuration("-1m")
                  result := currentTime.Add(m)
          

          示例

          见 “1.2 获取之前/之后的时间”

          3.2 计算两时间之差

          语法

          timeOne - timeTwo的方法如下:

          timeOne.Sub(timeTwo)

          示例

          package main
          
          import (
                  "fmt"
                  "time"
          )
          
          func main() {
                  currentTime := time.Now()
                  //创建时间1
                  timeDuOne, _ := time.ParseDuration("-1h")
                  timeOne := currentTimjavascripte.Add(timeDuOne)
                  fmt.Println("时间1:",timeOne)
                  //创建时间2
                  timeDuTwo, _ := time.ParseDuration("1h")
                  timeTwo := currentTime.Add(timeDuTwo)
                  fmt.Println("时间2:",timeTwo)
                  //计算两时间 
                  dTime := timeOne.Sub(timeTwo)
                  fmt.Println("两时间的差是", dTime)
          
                  m := timeOne.Sub(timeTwo)
                  fmt.Println("差值按分钟计:", m.Minutes())
          
                  h := timeOne.Sub(timeTwo)
                  fmt.Println("差值按小时计:", h.Hours())
          
                  d := timeOne.Sub(timeTwo)
                  fmt.Println("差值按天计算:", d.Hours()/24)
          }

          结果输出

          时间1: 2021-11-21 16:04:39.293524501 +0800 CST m=-3599.999909286

          时间2: 2021-11-21 18:04:39.293524501 +0800 CST m=+3600.000090714

          两时间的差是 -2h0m0s

          差值按分钟计: -120

          差值按小时计: -2

          差值按天计算: -0.08333333333333333

          总结

          到此这篇关于golang时间/时间戳的获取与转换的文章就介绍到这了,更多相关golang时间 时间戳获取与转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号