go的时间转换和比较

Posted 快乐源泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go的时间转换和比较相关的知识,希望对你有一定的参考价值。

时间转换

timeLayout := "2006-01-02 15:04:05"

1.获取服务器时间

fmt.Println(time.Now().Format(timeLayout))

2.获取UTC时间

fmt.Println(time.Now().UTC().Format(timeLayout))

3.服务器时间转换为UTC时间

timeStr := "2021-05-18 12:00:00"          // 认为服务器时间
location, _ := time.LoadLocation("Local") // timeStr是北京时间,注意使用Local
localTime, _ := time.ParseInLocation(timeLayout, timeStr, location)
fmt.Println(localTime.UTC().Format(timeLayout)) // 转为UTC时间

说明:注意timeStr值,此时我们把它当做服务器时间,所以time.LoadLocation("Local") 使用Local

4.UTC时间转换为服务器时间

timeStr := "2021-05-18 12:00:00"        // 认为是UTC器时间
location, _ := time.LoadLocation("UTC") // timeStr是北京时间,注意使用UTC
localTime, _ := time.ParseInLocation(timeLayout, timeStr, location)
fmt.Println(localTime.Local().Format(timeLayout)) // 转为Local服务器时间

说明:注意timeStr值,此时我们把它当做UTC时间,所以time.LoadLocation("UTC") 使用Local

时间比较

timeLayout := "2006-01-02 15:04:05"
timeStr := "2021-05-17 11:00:00"          // 认为服务器时间
location, _ := time.LoadLocation("Local") // timeStr是北京时间,注意使用Local
localTime, _ := time.ParseInLocation(timeLayout, timeStr, location)
fmt.Println(localTime.UTC().Format(timeLayout)) // 转为UTC时间

compareTimeStr := "2021-05-17 02:00:00" // 认为UTC时间
location, _ = time.LoadLocation("UTC")  // timeStr是北京时间,注意使用UTC
compareTime, _ := time.ParseInLocation(timeLayout, compareTimeStr, location)
fmt.Println(compareTime.Local().Format(timeLayout)) // 转为服务器时间
fmt.Println("------------------------------------")

fmt.Println(compareTime.Before(localTime)) // Before 会统一时间基准点
fmt.Println(compareTime.After(localTime))  // After 会统一时间基准点

说明: Before After会统一时间基准点,可以不用担心因为时区的问题导致时间比较错误,但要注意转为golang time.Time时候的时区问题。

以上是关于go的时间转换和比较的主要内容,如果未能解决你的问题,请参考以下文章

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

Go中的struct比较知识点

在代码片段中包含类型转换

JavaScript单行代码,也就是代码片段

带有边距和页面转换器的片段内的 ViewPager 无法正确呈现