GO语言学习之时间格式化
老男孩IT教育
行业新闻
2021年1月18日 14:49
time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。
time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。
当前时间戳
获取当前时间、时间戳函数和方法:
func Now() Time
Now返回当前本地时间。
func (t Time) Unix() int64
Unix将t表示为Unix时间,即从时间点January 1, 1970 UTC到时间点t所经过的时间(单位秒)。
func (t Time) UnixNano() int64
UnixNano将t表示为Unix时间,即从时间点January 1, 1970 UTC到时间点t所经过的时间(单位纳秒)。如果纳秒为单位的unix时间超出了int64能表示的范围,结果是未定义的。注意这就意味着Time零值调用UnixNano方法的话,结果是未定义的。
代码实现:
package main
import (
"fmt"
"time"
)
func main() {
current := time.Now()
fmt.Println("当前时间:", current)
now := current.Unix()
fmt.Println("当前时间戳:", now)
nanosecond := time.Now().UnixNano()
fmt.Println("当前纳秒时间戳:", nanosecond)
}
格式化时间戳
格式化时间戳常用函数和方法:
func (t Time) Format(layout string) string
Format根据layout指定的格式返回t代表的时间点的格式化文本表示。layout定义了参考时间:
2006-01-02 15:04:05
2006年01月02日 15时04分05秒
Mon Jan 2 15:04:05 -0700 MST 2006
格式化后的字符串表示,它作为期望输出的例子。同样的格式规则会被用于格式化时间。
2006年1月2日15时04分05秒是Go语言诞生的日子,所以Format方法的硬性规定就是:如果想格式化时间,并且借助Format方法,就必须Go语言的诞生时间做代码时间格式化的模板,如果不符输出时间是不正确的。记忆方法:6-1-2-3-4-5
func Unix(sec int64, nsec int64) Time
Unix创建一个本地时间,对应sec和nsec表示的Unix时间(从January 1, 1970 UTC至该时间的秒数和纳秒数)。
nsec的值在[0, 999999999]范围内是合法的。
一、当前时间格式化,代码实现:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
fmt.Println(time.Now().Format("2006年01月02日 15时04分05秒"))
fmt.Println(time.Now().Format("Mon Jan 2 15:04:05 -0700 MST 2006"))
}
二、时间戳转str格式化时间,代码实现:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Unix(0, 0).Format("2006-01-02 15:04:05"))
fmt.Println(time.Unix(1502282096, 0).Format("2006年01月02日 15时04分05秒"))
fmt.Println(time.Unix(1502282096, 0).Format("06-01-02 15:04:05"))
fmt.Println(time.Unix(1502282096, 0).Format("01-02 15:04"))
}
格式化时间转时间戳
格式化时间转时间戳常用函数和方法:
func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
Date返回一个时区为loc、当地时间为:
year-month-day hour:min:sec + nsec nanoseconds
month、day、hour、min、sec和nsec的值可能会超出它们的正常范围,在转换前函数会自动将之规范化。
func Parse(layout, value string) (Time, error)
Parse解析一个格式化的时间字符串并返回它代表的时间。
func ParseInLocation(layout, value string, loc *Location) (Time, error)
ParseInLocation类似Parse但有两个重要的不同之处。第一,当缺少时区信息时,Parse将时间解释为UTC时间,而ParseInLocation将返回值的Location设置为loc;第二,当时间字符串提供了时区偏移量信息时,Parse会尝试去匹配本地时区,而ParseInLocation会去匹配loc。
方法一:
package main
import (
"fmt"
"time"
)
func main() {
the_time := time.Date(2017, 8, 9, 12, 34, 56, 0, time.Local)
unix_time := the_time.Unix()
fmt.Println(unix_time)
fmt.Println(time.Unix(unix_time, 0).Format("2006-01-02 15:04:05"))
}
方法二:
package main
import (
"fmt"
"time"
)
func main() {
// 返回的不是本地时间, 而是 UTC , 会自动加8小时.
the_time, err := time.Parse("2006-01-02 15:04:05", "2017-08-09 12:34:56")
if err == nil {
unix_time := the_time.Unix()
fmt.Println(unix_time)
fmt.Println(time.Unix(unix_time, 0).Format("2006-01-02 15:04:05"))
}
// 使用time.ParseInLocation 返回本地时间
the_time, err = time.ParseInLocation("2006-01-02 15:04:05", "2017-08-09 12:34:56", time.Local)
if err == nil {
unix_time := the_time.Unix()
fmt.Println(unix_time)
fmt.Println(time.Unix(unix_time, 0).Format("2006-01-02 15:04:05"))
}
}
获取星期
获取当前时间星期常用方法:
func (t Time) Weekday() Weekday
返回时间点t对应的那一周的周几。
func (d Weekday) String() string
String返回该日(周几)的英文名("Sunday"、"Monday",……)
代码实现:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
weeks := now.Weekday().String()
fmt.Println(weeks)
}
老男孩教育专注Linux云计算运维工程师、Python全栈+人工智能、Python自动化运维开发、网络安全、数据分析、新媒体运营、MySQLDBA开发、K8S微服务、Go语言等互联网课程培训。欢迎对it行业感兴趣的朋友们来公司考察及学习。
推荐阅读:
