日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Go 字符串時(shí)間等相互轉(zhuǎn)化以及時(shí)間加減等操作

作者:liuhmmjj 更新時(shí)間: 2022-04-22 編程語言

1.獲取當(dāng)前時(shí)間的第二天零點(diǎn)時(shí)間,以及獲取當(dāng)前的23:59:59 的時(shí)間戳和date類型:

package main

import (
	"fmt"
	"time"
)

func main(){
	timeStr := time.Now().Format("2006-01-02")
	fmt.Println(timeStr)
	//使用Parse 默認(rèn)獲取為UTC時(shí)區(qū) 需要獲取本地時(shí)區(qū) 所以使用ParseInLocation
	t2, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
	//獲取當(dāng)前時(shí)間的第二天零點(diǎn)時(shí)間
	tomorrowFirstMoment2 := t2.AddDate(0, 0, 1)
	fmt.Println(tomorrowFirstMoment2)

	//獲取時(shí)間戳
	sjc := tomorrowFirstMoment2.Unix()
	//必須先將時(shí)間戳轉(zhuǎn)為time.Duration才能與time.Second相乘
	d := time.Duration(sjc)*time.Second
	now := time.Now().Unix()
	//計(jì)算距離當(dāng)前時(shí)間還有多少納秒
	fmt.Println(int64(d-time.Duration(now*1000000000)))

	var nowTime = time.Now()
	//獲取當(dāng)前時(shí)間的第二天零點(diǎn)時(shí)間
	var tomorrowFirstMoment = time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day()+1, 0, 0, 0, 0, nowTime.Location())
	fmt.Println(tomorrowFirstMoment)
	//計(jì)算距離當(dāng)前時(shí)間還有多少納秒
	var d2 = tomorrowFirstMoment.Sub(nowTime)
	fmt.Println(int64(d2))

	//獲取當(dāng)天的23:59:59
	todayyLastMoment, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local)
	fmt.Println(todayyLastMoment)
	//計(jì)算距離當(dāng)前時(shí)間還有多少納秒
	var d3 = todayyLastMoment.Sub(nowTime)
	//直接用print的話就不用強(qiáng)轉(zhuǎn)為int64
	print(d3)

}

結(jié)果:

2022-04-19
2022-04-20 00:00:00 +0800 CST
49780000000000
2022-04-20 00:00:00 +0800 CST
49779126196000
2022-04-19 23:59:59 +0800 CST
49778126196000
Process finished with exit code 0

從結(jié)果可以看出第二天零點(diǎn)和今晚的23:59:59與當(dāng)前時(shí)間相減結(jié)果是一樣的,不應(yīng)該有1秒之差嗎?

常見時(shí)間格式轉(zhuǎn)化:

package main

import (
	"fmt"
	"time"
)

func main(){

	t := int64(1650344950)      //外部傳入的時(shí)間戳(秒為單位),必須為int64類型
	t1 := "2022-04-19 10:22:30" //外部傳入的時(shí)間字符串
	timeNow := time.Now()

	//時(shí)間轉(zhuǎn)換的模板,golang里面只能是 "2006-01-02 15:04:05" (go的誕生時(shí)間)
	timeTemplate1 := "2006-01-02 15:04:05" //常規(guī)類型
	timeTemplate2 := "2006/01/02 15:04:05" //其他類型
	timeTemplate3 := "2006-01-02"          //其他類型
	timeTemplate4 := "15:04:05"            //其他類型
	timeTemplate5 := "15"            //獲取 當(dāng)前時(shí)間的 時(shí)
	timeTemplate6 := "04"            //獲取 當(dāng)前時(shí)間的 分
	timeTemplate7 := "05"            //獲取 當(dāng)前時(shí)間的 秒

	// ======= 將時(shí)間戳格式化為日期字符串 =======
	fmt.Println(time.Unix(t, 0).Format(timeTemplate1)) //輸出:2022-04-19 13:09:10
	fmt.Println(time.Unix(t, 0).Format(timeTemplate2)) //輸出:2022/04/19 13:09:10
	fmt.Println(time.Unix(t, 0).Format(timeTemplate3)) //輸出:2022-04-19
	fmt.Println(time.Unix(t, 0).Format(timeTemplate4)) //輸出:13:09:10
	fmt.Println(time.Unix(t, 0).Format(timeTemplate5)) //輸出:13
	fmt.Println(time.Unix(t, 0).Format(timeTemplate6)) //輸出:09
	fmt.Println(time.Unix(t, 0).Format(timeTemplate7)) //輸出:10

	// ======= 將時(shí)間字符串轉(zhuǎn)換為時(shí)間戳 =======
	stamp, _ := time.ParseInLocation(timeTemplate1, t1, time.Local) //使用parseInLocation將字符串格式化返回本地時(shí)區(qū)時(shí)間
	fmt.Println(stamp)  //2019-01-08 13:50:30 +0800 CST
	fmt.Println(stamp.Format(timeTemplate1)) //輸出:2022-04-19 10:22:30
	fmt.Println(stamp.Format(timeTemplate2)) //輸出:2022/04/19 10:22:30
	fmt.Println(stamp.Format(timeTemplate3)) //輸出:2022-04-19
	fmt.Println(stamp.Format(timeTemplate4)) //輸出:10:22:30
	fmt.Println(stamp.Format(timeTemplate5)) //輸出:10
	fmt.Println(stamp.Format(timeTemplate6)) //輸出:22
	fmt.Println(stamp.Format(timeTemplate7)) //輸出:30
	fmt.Println(stamp.Unix())  //輸出:1546926630


	fmt.Println(timeNow)  //2022-04-19 10:25:33.674693 +0800 CST m=+0.000083549
	fmt.Println(timeNow.Format(timeTemplate1)) //輸出:2022-04-19 10:25:33
	fmt.Println(timeNow.Format(timeTemplate2)) //輸出:2022/04/19 10:25:33
	fmt.Println(timeNow.Format(timeTemplate3)) //輸出:2022-04-19
	fmt.Println(timeNow.Format(timeTemplate4)) //輸出:10:25:33
	fmt.Println(timeNow.Format(timeTemplate5)) //輸出:10
	fmt.Println(timeNow.Format(timeTemplate6)) //輸出:25
	fmt.Println(timeNow.Format(timeTemplate7)) //輸出:33


}

結(jié)果:

2022-04-19 13:09:10
2022/04/19 13:09:10
2022-04-19
13:09:10
13
09
10
2022-04-19 10:22:30 +0800 CST
2022-04-19 10:22:30
2022/04/19 10:22:30
2022-04-19
10:22:30
10
22
30
1650334950
2022-04-19 10:31:13.363526 +0800 CST m=+0.000091492
2022-04-19 10:31:13
2022/04/19 10:31:13
2022-04-19
10:31:13
10
31
13

原文鏈接:https://blog.csdn.net/u014082714/article/details/124266884

欄目分類
最近更新