在Go中,时间操作需要导入time包。
import "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
*/