golang 日期时间处理

时间:2021-06-09 14:20:17
package main

import (
"fmt"
"time"
) func main() {
fmt.Println(time.Now()) //显示时间:2019-03-15 17:49:29.0648086 +0800 CST m=+0.005000301
fmt.Println(time.Now().Format("2006---01-02 15:04:05")) //显示时间:2019---03-15 17:52:13 ,奇葩的2006-01-02 15:04:05,而不是yy-m-d H:m:s
fmt.Println(time.Now().Unix()) //时间戳 1552643533 // seconds since 1970
t, _ := time.Parse("2006---01-02 15:04:05", "2019---03-15 17:52:13") //格式化UTC时间转时间戳,还可用time.Date,ParseInLocation
fmt.Println(t.Unix())
//上月第一天,参考https://www.golangtc.com/t/51bd288c320b5264b800001c中navygong的代码
//比如今天,7.31,因为没有6.31,简单用AddDate(0, -1, 0),不是6月,而是7.1号。因此用下面的代码:
year, month, _ := time.Now().Date()
thisMonthFirstDay := time.Date(year, month, , , , , , t.Location()) //本月第一天
fmt.Println(thisMonthFirstDay.AddDate(, -, )) //上月第一天 fmt.Println(thisMonthFirstDay.AddDate(, , -)) //同理,本月最后一天
thisYearFirstDay := time.Date(year, , , , , , , t.Location()) //同理,本年第一天
fmt.Println(thisYearFirstDay.AddDate(-, , )) //去年第一天
fmt.Println(time.Now().Weekday()) //今天是周几?Friday
fmt.Println(int(time.Now().Weekday())) //
fmt.Println(time.Now().Add(-time.Minute * )) //10分钟前的时间
//明天零点的时间戳,参考https://blog.csdn.net/liangguangchuan/article/details/76922548
timeStr := time.Now().Format("2006-01-02")
//使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation
t5, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local)
t6, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
fmt.Println(t5.Unix() + )
fmt.Println(t6.AddDate(, , ).Unix()) }

补充说明:注意time.Now()返回的是本地时间。

另, 参考:https://www.jianshu.com/p/480ac51a22c0

补充:整形转日期字符串

    t0 := int64()
t1 := time.Unix(t0, ).Format("2006-01-02 15:04:05")
fmt.Println(t1)

要定时执行的话,参考之前的一篇:  Go语言中定时器cron的基本使用