日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > MAC >内容正文

MAC

golang字符串转Time类型问题

發布時間:2023/11/23 MAC 53 博士
生活随笔 收集整理的這篇文章主要介紹了 golang字符串转Time类型问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做項目中,遇到了golang 字符串轉Time類型的問題。調研后發現golang 提供了倆種方式,即time.Parse 跟 time.ParseInLocation。倆種方式 差距很大,用不好小心踩坑。

先上代碼:

 結果:

 不難發現,倆種方式轉換后的時間戳是不一樣的。結果是差了8個小時。導致這個的原因就是時區的問題。

看下倆個函數的作用:

  • time.Parse 把時間字符串轉換為Time,時區是UTC時區。
  • time.ParseInLocation可以根據時間字符串和指定時區轉換Time。

所以,我們應該用time.ParseInLocation進行轉換,同時指定時區為本地時間。

時區

這里順便在回憶下時區的關系。

整個地球分為二十四時區,每個時區都有自己的本地時間。在國際無線電通信場合,為了統一起見,使用一個統一的時間,稱為通用協調時(UTC, Universal Time Coordinated)。UTC與格林尼治平均時(GMT, Greenwich Mean Time)一樣,都與英國倫敦的本地時相同。在本文中,UTC與GMT含義完全相同。
北京時區(CST)是東八區,領先UTC八個小時

關系:

UTC=GMT

CST=UTC/GMT +8 小時

時間字符串和時間戳的相互轉換

package main

import (
	"log"
	"time"
)

func main() {
	t := int64(1546926630)      //外部傳入的時間戳(秒為單位),必須為int64類型
	t1 := "2019-01-08 13:50:30" //外部傳入的時間字符串

	//時間轉換的模板,golang里面只能是 "2006-01-02 15:04:05" (go的誕生時間)
	timeTemplate1 := "2006-01-02 15:04:05" //常規類型
	timeTemplate2 := "2006/01/02 15:04:05" //其他類型
	timeTemplate3 := "2006-01-02"          //其他類型
	timeTemplate4 := "15:04:05"            //其他類型

	// ======= 將時間戳格式化為日期字符串 =======
	log.Println(time.Unix(t, 0).Format(timeTemplate1)) //輸出:2019-01-08 13:50:30
	log.Println(time.Unix(t, 0).Format(timeTemplate2)) //輸出:2019/01/08 13:50:30
	log.Println(time.Unix(t, 0).Format(timeTemplate3)) //輸出:2019-01-08
	log.Println(time.Unix(t, 0).Format(timeTemplate4)) //輸出:13:50:30

	// ======= 將時間字符串轉換為時間戳 =======
	stamp, _ := time.ParseInLocation(timeTemplate1, t1, time.Local) //使用parseInLocation將字符串格式化返回本地時區時間
	log.Println(stamp.Unix())  //輸出:1546926630
}

到此這篇關于golang字符串轉Time類型問題 的文章就介紹到這了,更多相關golang字符串轉Time類型內容請搜索電腦知識網www.pcxun.com以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持電腦知識網www.pcxun.com!

總結

以上是生活随笔為你收集整理的golang字符串转Time类型问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。