前言
最近开发项目经常用到go的time包, 照python的略微麻烦一些, 特别是那个layout被无数人吐槽(包括我), 这里整理了一些常用的方法, 有需要的可以了解一下
package main
import (
"time"
"fmt"
)
// GetMonthStartAndEndTime 获取月份的起止时间
func GetMonthStartAndEndTime(month time.Month) (start, end int64) {
t := time.Now()
start = time.Date(t.Year(), t.Month()+month, 1, 0, 0, 0, 0, t.Location()).Unix()
end = time.Date(t.Year(), t.Month()+month+1, 0, 0, 0, 0, 0, t.Location()).Unix()
return
}
func main() {
// time函数 layout 2006-01-02 15:04:05
//生成时间
time.Now()
time.Now().Unix()
//时间转换 time.Format 根据更改layout转成任何自己想要的格式化字段
time.Now().Format("2006-01-02")
time.Now().Format("200601")
//格式时间转换为time类型
a := "20190606"
b, _ := time.Parse("20060102", a)
fmt.Println(b.Unix())
//时间戳转为time类型
t := time.Unix(time.Now().Unix(), 0)
fmt.Println(t)
//time时间操作
tomrrow := time.Now().AddDate(0, 0, 1) //明天
time.Now().AddDate(0, -1, 0) //上月
//也可以是一段时间
fmt.Println(t.Add(time.Duration(10) * time.Minute))
//判断时间前后
bol1 := t.After(tomrrow)
bol2 := t.Before(tomrrow)
fmt.Println(bol1, bol2)
//计算日期时间差 一般都是跟 Add方法一块使用
fmt.Println(t.Sub(tomrrow))
//计算日期离今天间隔几天
aaa, _ := time.Parse("20060102", a)
fmt.Println(int64(aaa.Sub(time.Now()).Hours() / 24))
//获取明天凌晨的时间戳
t = time.Now()
zero := time.Date(t.Year(), t.Month(), t.Day()+1, 0, 0, 0, 0, t.Location()).Unix()
fmt.Println(zero)
// 获取上月的起止时间
fmt.Println(GetMonthStartAndEndTime(-1))
}