1 时间格式化
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05"))
}
程序运行结果
go的时间格式化比较奇怪 不同于java的 yyyy-MM-dd HH:mm:ss
而是采用了一个指定的时间(2006-01-02 15:04:05)
编程语言 | 时间单位 | 时间格式 |
---|---|---|
java | 年 | yyyy |
golang | 年 | 2006 |
java | 月 | MM |
golang | 月 | 01 |
java | 日 | dd |
golang | 日 | 02 |
java | 时 | HH |
golang | 时 | 15 |
java | 分 | mm |
golang | 分 | 04 |
java | 秒 | ss |
golang | 秒 | 05 |
2 时间解析时区问题
package main
import (
"fmt"
"time"
)
func main() {
//要解析的时间
parseTime := "2019-09-27 09:26:31"
//当前时间
now := time.Now()
//时间解析
compareTime, _ := time.Parse("2006-01-02 15:04:05", parseTime )
fmt.Println("当前时间 ",now.Format("2006-01-02 15:04:05"))
fmt.Println("解析时间 ",compareTime.Format("2006-01-02 15:04:05"))
fmt.Println()
/*
时间比较
判断解析出的时间是否小于当前时间
如果是打印 解析时间
如果否打印 当前时间
*/
if now.After(compareTime) {
fmt.Println("解析时间 ",compareTime.Format("2006-01-02 15:04:05"))
} else {
fmt.Println("当前时间 ",now.Format("2006-01-02 15:04:05"))
}
}
执行结果
很明显解析出的时间要小于当前时间,但是打印出的确是当前时间
尝试直接打印出时间观察两者区别
fmt.Println(compareTime)
fmt.Println(now)
结果
发现存在时区问题
修改代码
package main
import (
"fmt"
"time"
)
func main() {
//要解析的时间
parseTime := "2019-09-27 09:26:31"
//当前时间
now := time.Now()
//时间解析为本地时区时间
compareTime, _ := time.ParseInLocation("2006-01-02 15:04:05", parseTime , time.Local)
fmt.Println("当前时间 ",now.Format("2006-01-02 15:04:05"))
fmt.Println("解析时间 ",compareTime.Format("2006-01-02 15:04:05"))
fmt.Println()
/*
时间比较
判断解析出的时间是否小于当前时间
如果是打印 解析时间
如果否打印 当前时间
*/
if now.After(compareTime) {
fmt.Println("解析时间 ",compareTime.Format("2006-01-02 15:04:05"))
} else {
fmt.Println("当前时间 ",now.Format("2006-01-02 15:04:05"))
}
}
结果正常