golang獲取當前時間戳_Go語言獲取當天的0點和23點時間戳 (基於標準庫)
阿新 • • 發佈:2021-01-30
技術標籤:golang獲取當前時間戳
需求:
需要做一個功能,每天早上8點以後查詢第二天到期的服務(會員,服務等)給使用者推送提示
分析:
1、如果使用mysql查詢語句應該是這樣的: select * from table_name where start_time < time <end_time; 2、但是這個起始時間該怎麼獲取呢?而且程式是每天定時執行的,所以是不可能寫死這個具體的起始時間。 3、因為起始時間是不確定的,但可以獲取當前時間的時間戳,那麼是不是就可以在這個方面入手? 4、獲取到每天的時間戳,但我們要的是第二天的起始時間,因為一天的時間是86400秒,今天的時間加上86400 是不是就是第二天的時間了? 5、但是每天獲取到的時間戳是不固定的,所以需要進行一個轉換。
實現方法:
1、先獲取當前時間戳(一天以內隨意時間段)
2、將時間戳轉換為格式日期時間,如:1604364287 =>2020-11-03
3、再將日期拼接為標準格式時間:2020-11-03_00:00:00 2020-11-03_23:59:59 2020-11-03_21:59:59
4、再把格式日期字元轉換為時間戳:1604332800。
5、再把轉換過來的時間戳加上或減去一天(86400)即可獲取前一天或後一天指定的時間戳了。
6、由以上引伸出來,就可以獲取任意一天任意指定時刻的時間戳了。
程式碼示例:
package main //僅演示獲取當天指定時間的時間戳 import ( "fmt" "time" ) //主函式 func main() { slime :="2020-11-03" startTime,endTime:=GetDateTime(slime) fmt.Println( startTime,endTime) } func GetDateTime(date string) (int64,int64){ //獲取當前時區 loc, _ := time.LoadLocation("Local") //日期當天0點時間戳(拼接字串) startDate := date+"_00:00:00" startTime, _:= time.ParseInLocation("2006-01-02_15:04:05",startDate,loc) //日期當天23時59分時間戳 endDate:=date+"_23:59:59" end,_:=time.ParseInLocation("2006-01-02_15:04:05",endDate,loc) //返回當天0點和23點59分的時間戳 return startTime.Unix(),end.Unix() }
結果: