1. 程式人生 > 其它 >golang獲取當前時間戳_Go語言獲取當天的0點和23點時間戳 (基於標準庫)

golang獲取當前時間戳_Go語言獲取當天的0點和23點時間戳 (基於標準庫)

技術標籤: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()
}

結果:

d7fd79f3e9a8d8ea6030590cc6bd3fb3.png