go的各种时间转化实践
代码:
package main
import (
"fmt"
"time"
)
var DateFmtYYYYMMDD = "2006-01-02"
var DateFmtYYYYMMDDHHmmss = "2006-01-02 15:04:05"
func main(){
//设置全局时区为utc +8
utcZone := time.FixedZone("UTC", 0)
time.Local = utcZone
//当前时间转 "2022-04-30"
fmt.Println("当前时间转 2022-04-30")
fmt.Println(time.Now().Format(DateFmtYYYYMMDD))
//当前时间转 "2022-04-30 12:00:23"
fmt.Println("当前时间转 2022-04-30 12:00:23")
fmt.Println(time.Now().Format(DateFmtYYYYMMDDHHmmss))
// "2022-04-30" 转 "2022-04-30 00:00:00 +0000 UTC"
fmt.Println("2022-04-30 转 2022-04-30 00:00:00 +0000 UTC")
time1 := "2022-04-30"
time1Parse, _ := time.Parse(DateFmtYYYYMMDD, time1)
fmt.Println(time1Parse,time1Parse.String())
// "2022-04-30" 转 "2022-04-30 00:00:00 +0000 UTC"
fmt.Println("2022-04-30 转 2022-04-30 00:00:00 +0000 UTC")
time2 := "2022-04-30"
time2Parse, _ := time.Parse(DateFmtYYYYMMDD, time2)
fmt.Println(time2Parse,time2Parse.String())
// "2022-04-30" 转 "2022-04-30 00:00:00 "
fmt.Println("2022-04-30 转 2022-04-30 00:00:00")
time3 := "2022-04-30"
time3Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, fmt.Sprintf("%s 00:00:00", time3))
time3Str := time3Parse.Format(DateFmtYYYYMMDDHHmmss)
fmt.Println(time3Str)
// 2022-04-30 02:00:00 与 2022-05-01 01:00:00 相差的小时数
fmt.Println("2022-04-30 02:00:00 与 2022-05-01 01:00:00 相差的小时数 [23]")
time4 := "2022-04-30 02:00:00"
time5 := "2022-05-01 01:00:00"
time4Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time4)
time5Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time5)
hour1Interval := time5Parse.Sub(time4Parse).Hours()
fmt.Println(hour1Interval)
// 2022-05-01 01:00:00 2022-04-30 02:00:00 相差的小时数(为负数)
fmt.Println("2022-05-01 01:00:00 2022-04-30 02:00:00 相差的小时数(为负数)[-23]")
time6 := "2022-04-30 02:00:00"
time7 := "2022-05-01 01:00:00"
time6Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time6)
time7Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time7)
hour2Interval := time6Parse.Sub(time7Parse).Hours()
fmt.Println(hour2Interval)
// 2022-04-30 02:00:00 与 2022-05-01 01:30:30 相差的时分秒
fmt.Println("2022-04-30 02:00:00 与 2022-05-01 01:30:30 相差的时分秒 [23h30m30s]")
time8 := "2022-04-30 02:00:00"
time9 := "2022-05-01 01:30:30"
time8Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time8)
time9Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time9)
hour3Interval := time9Parse.Sub(time8Parse).String()
fmt.Println(hour3Interval)
// 2022-04-30 的后一天
fmt.Println("2022-04-30 的后一天")
time10 := "2022-04-30"
time10Parse, _ := time.Parse(DateFmtYYYYMMDD, time10)
nextDay := time10Parse.AddDate(0,0,1)
fmt.Println(nextDay)
fmt.Println("2022-04-30 的前一天")
beforeDay := time10Parse.AddDate(0,0,-1)
fmt.Println(beforeDay)
fmt.Println("2022-04-30 12:30:00 的后一天")
time11 := "2022-04-30 12:30:00"
time11Parse, _ := time.Parse(DateFmtYYYYMMDDHHmmss, time11)
nextDay2 := time11Parse.AddDate(0,0,1)
fmt.Println(nextDay2)
fmt.Println("2022-04-30 12:30:00 的前一天")
beforeDay2 := time11Parse.AddDate(0,0,-1)
fmt.Println(beforeDay2)
}
如有不对,烦请指出,感谢~