首页 > 其他分享 >Go之time包日期操作,时间戳与日期相互转换

Go之time包日期操作,时间戳与日期相互转换

时间:2022-11-12 21:11:06浏览次数:41  
标签:02 11 01 fmt time 日期 Printf Go

在Go中,时间操作需要导入time包

获取当前时间

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    // 获取当前时间
    t := time.Now()
    fmt.Printf("now=%v\n", t)
    
    /*
        time.Now() 返回类型为time.Time
        查看time包下面的Time是结构体,该结构体包含一些方法(只列出其中一些)
    */
    fmt.Printf("year=%v\n", t.Year())        // 年
    fmt.Printf("month=%v\n", t.Month())      // 月(英文格式)
    fmt.Printf("month=%v\n", int(t.Month())) // 月(int强转为数字格式)
    fmt.Printf("day=%v\n", t.Day())          // 日
    fmt.Printf("hour=%v\n", t.Hour())        // 时
    fmt.Printf("minute=%v\n", t.Minute())    // 分
    fmt.Printf("second=%v\n", t.Second())    // 秒
    fmt.Printf("时间戳=%v\n", t.Unix())         // 时间戳(秒)
    fmt.Printf("时间戳=%v\n", t.UnixNano())     // 时间戳(纳秒)
    fmt.Printf("周几=%v\n", t.Weekday())       // 周几(英文格式)
    fmt.Printf("周几=%v\n", int(t.Weekday()))  // 周几(int强转为数字格式)
}
 
/*
    输出:
    now=2021-11-02 10:03:14.1890599 +0800 CST m=+0.008279001
    year=2021
    month=November
    month=11
    day=2
    hour=10
    minute=3
    second=14
    时间戳=1635818594
    时间戳=1635818594189059900
    周几=Tuesday
    周几=2
*/

格式化日期

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    t := time.Now()
    /*
        格式化时间使用  T.Format()
        其中2006-01-02 15:04:05是格式化的标准格式
        可以理解为占位符 年(2006) 月(01/1) 日(02/2) 时(15/3) 分(04/4) 秒(05/5)
        每个占位符中间可以使用符号比如"-","/"等,也可以什么都不加直接连接在一起
    */
    fmt.Printf("%v\n", t.Format("2006-01-02 15:04:05"))
    fmt.Printf("%v\n", t.Format("2006-01-02"))
    fmt.Printf("%v\n", t.Format("2006-1-2")) // 占位符月日不带0,格式化后的小于10的月日也不带0
    fmt.Printf("%v\n", t.Format("01"))
}
 
/*
    输出:
    2021-11-02 11:22:20
    2021-11-02
    2021-11-2
    11
*/

时间戳转日期格式

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    /*
        1、把时间戳转使用time.Unix()转化为 time.Time 类型时间
        2、使用 Format() 方法格式化
    */
    fmt.Printf("%v\n", time.Unix(1635818594, 0).Format("2006/01/02 15:04:05"))
}
 
/*
    输出
    2021/11/02 10:03:14
*/

日期转为时间戳

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    /*
        1、设置时区
        2、time.ParseInLocation() 返回time.Time类型
    */
    Loc, _ := time.LoadLocation("Asia/Shanghai")
 
    // 格式 2006-01-02, 待转化日期 2021-11-02
    t1, err := time.ParseInLocation("2006-01-02", "2021-11-02", Loc)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%v\n", t1.Unix())
    }
}
 
/*
    输出:
    1635782400
*/

多少时间之前或之后

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    /*
        使用Time结构体上的Add()方法
        Add方法接收 time.Duration类型参数
    */
    // 一天后
    fmt.Printf("%v\n", time.Now().Add(time.Hour*24).Format("2006/01/02 15:03:04"))
    // 一天前 
    fmt.Printf("%v\n", time.Now().Add(-time.Hour*24).Format("2006/01/02 15:03:04"))
}
 
/*
    输出:
    2021/11/03 13:01:18
    2021/11/01 13:01:18
*/

 

标签:02,11,01,fmt,time,日期,Printf,Go
From: https://www.cnblogs.com/zh718594493/p/16884672.html

相关文章