获取当前时间
// 获取当前时间对象
timeObj := time.Now()
/* 获取当前日期 语法一 */
// 打印当前日期
fmt.Println(timeObj) // 2024-02-20 17:50:54.085353 +0800 CST m=+0.000323093
// 当前年
year := timeObj.Year()
// 打印当月
month := timeObj.Month()
// 打印当前日
day := timeObj.Day()
// 打印当前小时
hour := timeObj.Hour()
// 打印当前分
minute := timeObj.Minute()
// 打印当前秒
second := timeObj.Second()
// 按格式打印日期 // 2024-2-20 17:57:59
fmt.Printf("%d-%d-%d %d:%d:%d \n", year, month, day, hour, minute, second)
// 标注日期格式 个位补0输出 2024-02-20 17:59:08
// %02d中的2表示宽度,整数不够2列就补上0
fmt.Printf("%d-%02d-%02d %02d:%02d:%02d \n", year, month, day, hour, minute, second)
/* 获取当前日期 语法二
go中格式化时间模板不是场景的 y-m-d...
使用Go的诞生时间 2006年1月2号15点04分
*/
// 通过 format格式化输出 24小时制
// 2024-02-20 18:09:44
fmt.Println(timeObj.Format("2006-01-02 15:04:05"))
// 2024/02/20 18:09:44
fmt.Println(timeObj.Format("2006/01/02 15:04:05"))
// 18:09:44 2024/02/20
fmt.Println(timeObj.Format("15:04:05 2006/01/02 "))
// 通过 format格式化输出 12小时制
// 2024/02/20 06:09:44
fmt.Printf(timeObj.Format("2006-01-02 03:04:05"))
获取时间戳及和日期互相转化
/* 获取当前时间戳 */
fmt.Println(timeObj.Unix())
/* 获取纳秒时间戳 */
fmt.Println(timeObj.UnixNano())
/* 时间戳转换成日期字符串 */
// 获取当前时间戳
unixTime := timeObj.Unix()
// 通过time获取当前时间戳的时间对象
obj := time.Unix(int64(unixTime), 0) // Param:秒级的int64的时间戳 , 纳秒的int64时间戳,不用则传0
// 格式化输出
fmt.Println(obj.Format("2006-01-02 15:04:05"))
/* 日期字符串转换为时间戳 */
nowTimeStr := "2024-01-01 01:01:01"
// Param:要格式化的时间模板,当前时间字符串,时区(time.Local表示本地时区)
tObj, _ := time.ParseInLocation("2006-01-02 15:04:05", nowTimeStr, time.Local)
fmt.Println(tObj) // 时间对象, 2024-01-01 01:01:01 +0800 CST
fmt.Println(tObj.Unix()) // 通过时间对象 转换 1704042061
时间间隔
/* 源码定义支持的调用 */
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)
func main() {
fmt.Println(time.Second) // 1s
fmt.Println(time.Hour * 3) // 3h0m0s
}
时间操作
func main() {
timeObj := time.Now()
// 当前时间增加1小时
fmt.Println(timeObj.Add(time.Hour))
// 求两个时间对象之间的差值
// 获取指定时间的时间对象 2024-01-01 00:00:00 +0000 UTC
t1 := time.Date(2024, time.January, 1, 0, 0, 0, 0, time.UTC)
t2 := time.Date(2024, time.January, 2, 0, 0, 0, 0, time.UTC)
duration1 := t2.Sub(t1) // t2 -t1的间隔 24h0m0s
fmt.Println(duration1)
fmt.Println(timeObj.Sub(t2)) // 当前时间-t2的间隔 1186h43m6.808475s
// 判断两个时间,相等则是true,否则false
t3 := time.Date(2024, time.January, 1, 0, 0, 0, 0, time.UTC)
t4 := time.Date(2024, time.January, 1, 12, 0, 0, 0, time.UTC)
isEqual := t4.Equal(t3)
fmt.Println(isEqual)
// 判断时间是否在对于时间之前,是的话true 否则 false
t5 := time.Date(2024, time.January, 1, 0, 0, 0, 0, time.UTC)
t6 := time.Date(2024, time.January, 2, 12, 0, 0, 0, time.UTC)
isBefore := t5.Before(t6)
fmt.Println(isBefore)
// 判断时间是否在对于时间之后,是的话true 否则 false
isAfter := t6.After(t5)
fmt.Println(isAfter)
}
golang定时器
import (
"fmt"
"time"
)
func main() {
/* 间隔定时器 */
// 定义一个间隔1秒的定时器
ticker := time.NewTicker(time.Second)
num := 0
// 迭代定时器.C
for t := range ticker.C {
fmt.Println(t)
num++
if num == 5 {
// 如果执行测试=5,使用Stop终止定时器
ticker.Stop()
}
}
}
标签:2024,01,函数,fmt,timeObj,golang,time,Println
From: https://www.cnblogs.com/Mickey-7/p/18023843