1. 获取当前时间戳
常用的获取当前时间戳的有:
- 时间戳(秒):
time.Now().Unix()
- 时间戳(纳秒):
time.Now().UnixNano()
- 时间戳(毫秒):
time.Now().UnixNano()/1e6
完整示例如下:
package main
import (
"fmt"
"time"
)
func main() {
// 10 位时间戳(秒)
timestamp := time.Now().Unix()
// 19 位时间戳(纳秒)
timestampNano := time.Now().UnixNano()
// 13 位时间戳(毫秒)
timestampMillisecond := timestampNano / 1e6
fmt.Printf("时间戳(秒):%v\n", timestamp)
fmt.Printf("时间戳(纳秒):%v\n", timestampNano)
fmt.Printf("时间戳(毫秒):%v\n", timestampMillisecond)
fmt.Printf("时间戳(纳秒转换为秒):%v\n", timestampNano/1e9)
// 输出如下
// 时间戳(秒):1606361139
// 时间戳(纳秒):1606361139759851593
// 时间戳(毫秒):1606361139759
// 时间戳(纳秒转换为秒):1606361139
}
2. 获取格式化时间
我们可以使用 time.Now()
和 time.Date()
方法来获取当前时间;
其中 time.Now()
直接返回类似: 2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767
的时间;
但是 time.Date()
就需要自定义具体时间,如:time.Date(2020, time.October, 1, 8, 0, 0, 0, time.Local)
,两者返回类型一致。
完整示例代码:
package main
import (
"fmt"
"time"
)
func main() {
nowTime := time.Now()
// 获取具体年月日
year := time.Now().Year()
month := time.Now().Month()
day := time.Now().Day()
hour := time.Now().Hour()
minute := time.Now().Minute()
second := time.Now().Second()
nanosecond := time.Now().Nanosecond()
fmt.Println(nowTime)
fmt.Println(year, month, day, hour, minute, second, nanosecond)
// 如下毫秒 = 0 精确到秒
currentDate := time.Date(year, month, day, hour, minute, second, 0, time.Local)
fmt.Println(currentDate)
// 输出如下
// 2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767
// 2020 November 26 11 7 17 88905240
// 2020-11-26 11:07:17 +0800 CST
}
3. 将时间戳格式化yyyy-MM-dd HH:mm:ss
输出
// 方式一:
timeFormat := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(timeFormat)
// 方式二:先获取当前时间戳
timestamp := time.Now().Unix()
// 再格式化时间戳转化为日期
datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
fmt.Println(datetime)
// 输出
// 2020-11-26 11:29:11
// 2020-11-26 11:29:11
4. 字符串与时间的相互转换
4.1 时间戳转时间字符串 (int64 ==> string)
timestamp = 1606361139
// 时间戳转化为日期
datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
fmt.Println(datetime)
// 2020-11-26 11:25:39
4.2 时间字符串转时间格式 (string ==> time.Time)
datetime = "2020-11-26 11:25:39"
formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
fmt.Println(formatTime)
// 2020-11-26 11:25:39 +0000 UTC
4.3 时间字符串转时间戳 (string ==> int64)
datetime = "2020-11-26 11:25:39"
formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
// 再上一步的基础上使用 Unix() 函数
fmt.Println(formatTime.Unix())
// 1606389939