精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

「有問必答」Gopher如何優(yōu)雅的對時間進行格式化?

開發(fā) 前端
時間類型有一個自帶的方法Format進行格式化,需要注意的是Go語言中格式化時間模板不是常見的Y-m-d H:M:S而是使用Go的誕生時間2006年1月2號15點04分(記憶口訣為2006 1 2 3 4)。

昨天 交流群 關于「Go如何優(yōu)雅地對時間進行格式化?」展開了討論:

圖片

圖片

咋搞捏?

如何在不循環(huán)的情況下,把列表數(shù)據(jù)結構體的時間修改為咱們習慣的格式,而不是UTC模式

我們要實現(xiàn)的效果如下:

  • created_at 是go語言原生的方式,
  • updated_at 是我們期望優(yōu)化成的方式
{
    "code": 200,
    "data": {
        "count": 12,
        "info": [
            {
                "created_at": "2021-03-17T07:11:24+08:00" //原生方式
                "updated_at": "2021-03-17 07:11:24",  //需要優(yōu)化成這種
            }
        ]
    },
    "message": "成功"
}

引入神器

  1. 首先我們引入一個包,在控制臺運行
go get github.com/liamylian/jsontime
  1. 下載相關依賴
go mod download
  1. 修改結構體,聲明要處理的時間字段
type Order struct {
    .
    .
    .
 CreatedAt       time.Time `json:"created_at" time_format:"sql_datetime" time_utc:"false"`       // 格式化時間示例
 UpdatedAt       string  `json:"updated_at"`       // 原生狀態(tài)示例
}
  1. 取值時調用MarshalToString把結構體數(shù)據(jù)轉為字符串
  2. 但是轉完的字符串存在反斜線的問題,使用json.RawMessage()處理一下
var timeJson = jsontime.ConfigWithCustomTimeFormat

func AllOrder(c *gin.Context) {
 limitStr := c.DefaultQuery("limit", "10")
 pageStr := c.DefaultQuery("page", "0")
 orderType := c.DefaultQuery("orderType", "desc")
 orderField := c.DefaultQuery("orderField", "id")
 orderSql := orderField + " " + orderType
 limit, _ := strconv.Atoi(limitStr)
 page, _ := strconv.Atoi(pageStr)
 count, res := model.QueryOrder(0, limit, page, orderSql)
 //處理1:MarshalToString
 bytes, _ := timeJson.MarshalToString(&res)

 jsonInfo := map[string]interface{}{
  "count": count,
  //處理2:解決反斜線的問題
  "info":  json.RawMessage(bytes), 
 }

 c.JSON(http.StatusOK, ReturnJson{
  http.StatusOK,
  jsonInfo,
  "成功",
 })
}

我們最終實現(xiàn)出來的效果

{
    "code": 200,
    "data": {
        "count": 12,
        "info": [
            {
                "updated_at": "2021-03-17 07:13:24",
                "created_at": "2021-03-17 07:11:24",  
            }
        ]
    },
    "message": "成功"
}

好了,通過引入上面的神器就解決了我們的問題。

我們再深入理解一下time包的使用:

time包

time包提供了時間的顯示和測量用的函數(shù)。日歷的計算采用的是公歷。

時間類型

time.Time類型表示時間。我們可以通過time.Now()函數(shù)獲取當前的時間對象,然后獲取時間對象的年月日時分秒等信息。示例代碼如下:

func timeDemo() {
 now := time.Now() //獲取當前時間
 fmt.Printf("current time:%v\n", now)

 year := now.Year()     //年
 month := now.Month()   //月
 day := now.Day()       //日
 hour := now.Hour()     //小時
 minute := now.Minute() //分鐘
 second := now.Second() //秒
 fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}

時間戳

時間戳是自1970年1月1日(08:00:00GMT)至當前時間的總毫秒數(shù)。它也被稱為Unix時間戳(UnixTimestamp)。

基于時間對象獲取時間戳的示例代碼如下:

func timestampDemo() {
 now := time.Now()            //獲取當前時間
 timestamp1 := now.Unix()     //時間戳
 timestamp2 := now.UnixNano() //納秒時間戳
 fmt.Printf("current timestamp1:%v\n", timestamp1)
 fmt.Printf("current timestamp2:%v\n", timestamp2)
}

使用time.Unix()函數(shù)可以將時間戳轉為時間格式。

func timestampDemo2(timestamp int64) {
 timeObj := time.Unix(timestamp, 0) //將時間戳轉為時間格式
 fmt.Println(timeObj)
 year := timeObj.Year()     //年
 month := timeObj.Month()   //月
 day := timeObj.Day()       //日
 hour := timeObj.Hour()     //小時
 minute := timeObj.Minute() //分鐘
 second := timeObj.Second() //秒
 fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}

時間間隔

time.Duration是time包定義的一個類型,它代表兩個時間點之間經過的時間,以納秒為單位。time.Duration表示一段時間間隔,可表示的最長時間段大約290年。

time包中定義的時間間隔類型的常量如下:

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

例如:time.Duration表示1納秒,time.Second表示1秒。

時間操作

Add 我們在日常的編碼過程中可能會遇到要求時間+時間間隔的需求,Go語言的時間對象有提供Add方法如下:

func (t Time) Add(d Duration) Time 舉個例子,求一個小時之后的時間:

func main() {
 now := time.Now()
 later := now.Add(time.Hour) // 當前時間加1小時后的時間
 fmt.Println(later)
}

Sub

求兩個時間之間的差值:

func (t Time) Sub(u Time) Duration

返回一個時間段t-u。如果結果超出了Duration可以表示的最大值/最小值,將返回最大值/最小值。要獲取時間點t-d(d為Duration),可以使用t.Add(-d)。

Equal

func (t Time) Equal(u Time) bool

判斷兩個時間是否相同,會考慮時區(qū)的影響,因此不同時區(qū)標準的時間也可以正確比較。本方法和用t==u不同,這種方法還會比較地點和時區(qū)信息。

Before

func (t Time) Before(u Time) bool

如果t代表的時間點在u之前,返回真;否則返回假。

After

func (t Time) After(u Time) bool

如果t代表的時間點在u之后,返回真;否則返回假。

定時器

使用time.Tick(時間間隔)來設置定時器,定時器的本質上是一個通道(channel)。

func tickDemo() {
 ticker := time.Tick(time.Second) //定義一個1秒間隔的定時器
 for i := range ticker {
  fmt.Println(i)//每秒都會執(zhí)行的任務
 }
}

時間格式化

時間類型有一個自帶的方法Format進行格式化,需要注意的是Go語言中格式化時間模板不是常見的Y-m-d H:M:S而是使用Go的誕生時間2006年1月2號15點04分(記憶口訣為2006 1 2 3 4)。

也許這就是技術人員的浪漫吧~(當然,也有人說這是瞎搞~)

補充:如果想格式化為12小時方式,需指定PM。

func formatDemo() {
 now := time.Now()
 // 格式化的模板為Go的出生時間2006年1月2號15點04分 Mon Jan
 // 24小時制
 fmt.Println(now.Format("2006-01-02 15:04:05.000 Mon Jan"))
 // 12小時制
 fmt.Println(now.Format("2006-01-02 03:04:05.000 PM Mon Jan"))
 fmt.Println(now.Format("2006/01/02 15:04"))
 fmt.Println(now.Format("15:04 2006/01/02"))
 fmt.Println(now.Format("2006/01/02"))
}

解析字符串格式的時間

now := time.Now()
fmt.Println(now)
// 加載時區(qū)
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
 fmt.Println(err)
 return
}
// 按照指定時區(qū)和指定格式解析字符串時間
timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2019/08/04 14:15:20", loc)
if err != nil {
 fmt.Println(err)
 return
}
fmt.Println(timeObj)
fmt.Println(timeObj.Sub(now))

本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。

轉載本文請聯(lián)系「 程序員升級打怪之旅」公眾號。

責任編輯:武曉燕 來源: 程序員升職加薪之旅
相關推薦

2011-02-22 10:51:00

ProFTPD

2011-01-21 16:06:28

Thunderbird新手

2024-01-12 16:11:53

鴻蒙API接口GPT應用程序

2019-06-06 10:00:22

2009-12-11 09:09:46

Windows 7全球派對

2014-08-15 13:34:06

Linux

2020-11-03 10:21:33

MySQL

2012-11-14 09:21:34

亞馬遜Web服務EC2亞馬遜EC2

2024-07-24 13:58:21

2022-05-09 08:17:37

InstantJava字符

2013-07-08 17:41:53

Linux 系統(tǒng)U盤格式化

2018-10-18 06:39:01

數(shù)據(jù)中心運營電氣測試

2011-04-28 11:34:34

2012-03-26 10:45:34

CSS

2021-07-26 14:34:02

springboot 時間格式化項目

2022-09-05 08:06:36

SpringBoot時間格式化

2009-08-26 08:58:33

思科認證CCNA思科認證網絡工程師

2009-08-03 14:25:59

C#日期格式化

2012-03-27 09:42:57

JavaScriptCSS

2020-09-02 07:19:41

printf 格式化輸出Unix
點贊
收藏

51CTO技術棧公眾號

欧美日韩一区二区三区四区不卡 | 久久中文视频| 中文字幕亚洲一区二区va在线| 久久精品国产久精国产一老狼| 91免费观看网站| 成人免费无码大片a毛片| 中文字幕一区二区在线视频| 国产精品玖玖玖在线资源| 国产精品日日摸夜夜摸av| 91成人在线视频| 天天躁日日躁狠狠躁免费麻豆| 麻豆视频在线播放| 国产伦乱精品| 91福利在线观看| 久久久久国产精品视频| 毛片aaaaa| 成人免费观看49www在线观看| 国产欧美视频在线观看| 3344国产精品免费看| 欧美激情一区二区三区p站| 麻豆视频在线免费观看| 99精品桃花视频在线观看| 欧美黑人性视频| 午夜视频在线免费看| 国产欧美黑人| 国产美女娇喘av呻吟久久 | 在线观看麻豆| 日韩主播视频在线| 亚洲视频777| 91淫黄看大片| 97电影在线看视频| aaa亚洲精品| 欧美中文字幕在线视频| 亚洲精品成人无码熟妇在线| 香蕉视频亚洲一级| 国产精品私人影院| 成人精品网站在线观看| 九九视频免费观看| 99久久影视| 日韩一级大片在线| a级免费在线观看| 日本wwwxxxx| 久久中文精品| 最近2019中文字幕大全第二页 | 国产黄色小视频网站| 四虎影视国产精品| 亚洲欧美日韩小说| 国产精品免费区二区三区观看| 国产午夜视频在线播放| 偷拍视屏一区| 欧美三日本三级三级在线播放| 亚洲一区三区视频在线观看| 97人妻精品一区二区三区视频| 欧美不卡一区| 亚洲乱码av中文一区二区| 嫩草av久久伊人妇女超级a| 欧美aa一级| 国产精品美女久久久久高潮| 久久riav二区三区| 天天操天天干天天干| 久久资源在线| 欧美综合在线第二页| 欧美一二三区视频| 欧美电影一二区| 伊人一区二区三区久久精品| 一级淫片在线观看| 99爱在线视频| 国产精品天天看| 视频一区视频二区视频| www国产一区| 亚欧成人精品| 久久成人av网站| 国产美女喷水视频| 亚州综合一区| 欧美系列亚洲系列| av在线观看地址| 678在线观看视频| 欧美日韩美女视频| 欧美日韩午夜爽爽| 岛国在线大片| 成人av网站大全| 国产在线视频一区| 男人午夜免费视频| 91久久夜色精品国产按摩| 久久夜色精品亚洲噜噜国产mv| 一区二区三区影视| 狠狠综合久久| 色爱av美腿丝袜综合粉嫩av| 黄色精品视频在线观看| 九九免费精品视频在线观看| 欧美成人三级电影在线| 无尽裸体动漫2d在线观看| 在线看片国产福利你懂的| 亚洲一区二区三区视频在线播放| 亚洲一区二区三区免费看| 麻豆网站在线观看| 激情av一区二区| 欧美又粗又长又爽做受| 丝袜美腿av在线| 亚洲欧洲韩国日本视频 | 久久99国产精一区二区三区| 中文字幕久精品免费视频| 日韩 中文字幕| 中文字幕视频精品一区二区三区| 欧美丝袜自拍制服另类| 丰满少妇中文字幕| 国产精品免费大片| 亚洲精品综合精品自拍| 精品国产国产综合精品| 99伊人成综合| 久久久久久久久电影| 九九热视频在线免费观看| 亚洲天堂成人| 国产精品一区二区久久| 中文字幕观看在线| 成人听书哪个软件好| 91在线播放视频| 国产三级午夜理伦三级| 激情都市一区二区| 91天堂在线观看| 深夜福利视频在线观看| 91在线视频播放地址| 色撸撸在线观看| av片在线观看网站| 一区二区三区成人在线视频| 国产三级中文字幕| 成人在线免费看片| 亚洲综合久久久| 婷婷激情四射五月天| 丰满少妇一区| 欧美精品777| www.午夜av| 2020国产精品极品色在线观看| 亚洲精品有码在线| 色www亚洲国产阿娇yao| 亚洲精品网址| 午夜精品99久久免费| 800av免费在线观看| 免费在线亚洲| 国产www精品| 亚洲天堂免费av| 国产乱码一区二区三区| 视频二区一区| 影视一区二区三区| 宅男噜噜噜66一区二区66| 绯色av蜜臀vs少妇| 天堂在线精品| 高清在线视频日韩欧美| 最近国语视频在线观看免费播放| 久久精品国产久精国产| 99re在线播放| 久久久久久女乱国产| 国产精品成人网| 韩国日本美国免费毛片| 精品一二三区| 欧美成人精品在线视频| 国产尤物在线视频| 99热国产精品| 黄www在线观看| 成人短视频软件网站大全app| 中文字幕成人精品久久不卡 | 欧美视频在线观看一区二区| 在线观看国产精品一区| 91中文字幕精品永久在线| 国产精品久久久久91| www.国产精品视频| 亚洲自拍与偷拍| 在线观看成人动漫| 国产精品综合| 91久久久久久国产精品| 九七久久人人| 日韩精品一区二区三区中文精品| 草草影院第一页| 日韩成人一区二区三区在线观看| 亚洲精品久久区二区三区蜜桃臀| 波多野结衣在线高清| 在线一区二区视频| 日本xxxx免费| 日韩视频一区| 色之综合天天综合色天天棕色| 欧美a视频在线| 亚洲久久久久久久久久久| 台湾佬中文在线| 粉嫩av亚洲一区二区图片| 婷婷四月色综合| 久久69av| 日韩色av导航| 成人av网站在线播放| 成人av在线播放网址| 国产精品免费观看久久| 国产精品成人自拍| 国产福利视频一区二区| 国产不卡在线| 精品一区二区三区电影| 亚洲一区 中文字幕| 亚洲国产精品精华液网站| 日本一本在线视频| 久久精品国产www456c0m| 99精品国产高清一区二区| 欧美黑人粗大| 欧美疯狂xxxx大交乱88av| 精品影院一区| 色国产综合视频| a在线视频播放观看免费观看| 久久99蜜桃精品| 日本不卡在线观看| 欧美艳星kaydenkross| 久久影视电视剧免费网站清宫辞电视| 天天操天天干天天舔| 777亚洲妇女| 性色av免费观看| 亚洲一区二区欧美| 5566中文字幕| 久久99精品久久久久久动态图| 亚洲国产成人精品无码区99| 99成人在线视频| 欧美成熟毛茸茸复古| 青春草视频在线| 亚洲精品一区二区精华| 国产 日韩 欧美 成人| 成人天堂资源www在线| 日韩中文字幕a| 国产精品久久观看| 欧美日韩一区二区三| 亚洲精品一二三**| 91精品国产综合久久香蕉的用户体验| 久草在线资源站资源站| 久久久91精品国产| 2019中文字幕在线视频| 亚洲开心激情网| 天天摸夜夜添狠狠添婷婷| 日韩亚洲欧美在线| 91tv国产成人福利| 伊人色综合久久天天人手人婷| 国产精品91av| 狠狠色丁香九九婷婷综合五月| 亚洲五月天综合| 玖玖在线精品| 欧美韩国日本在线| 性高湖久久久久久久久| 国产二级片在线观看| 天堂资源在线亚洲| 国产精品果冻传媒潘| 美女日韩一区| 亚洲曰本av电影| 成av人片在线观看www| 亚洲全黄一级网站| 天堂资源中文在线| 欧美美女直播网站| 色婷婷久久综合中文久久蜜桃av| 色婷婷综合久久久| 国产免费一区二区三区四区| 国产喷白浆一区二区三区| 欧美做受高潮6| 久久久久久免费| 国产精品熟女一区二区不卡| 久久草av在线| 涩涩网站在线看| 国产精品99久久不卡二区| 999香蕉视频| 亚洲一本二本| 欧美日韩日本网| 国产一区二区区别| 亚洲精品成人自拍| 91超碰国产精品| 欧美交换配乱吟粗大25p| 少妇精品久久久一区二区三区| 久久超碰亚洲| 一道本一区二区三区| 欧美日韩一区二区视频在线观看 | 精品欧美一区二区久久 | 色999久久久精品人人澡69| 91精品在线国产| 超碰成人97| 国产精品中文字幕久久久| 亚洲精品伊人| 国产精品盗摄久久久| 久久天天久久| av噜噜色噜噜久久| 蜜桃一区二区三区| 一区二区三区四区国产| 欧美成人亚洲| 青青艹视频在线| 国内自拍视频一区二区三区 | 日韩精品久久理论片| 亚洲第一中文av| 国产成人免费在线观看不卡| 亚洲av成人无码一二三在线观看| 久久精品一区二区三区四区| 黄色精品视频在线观看| 亚洲一区二区四区蜜桃| 免费av中文字幕| 亚洲成av人片在线观看| 精品无码一区二区三区蜜臀| 亚洲一区二区三区国产| 国产成人自拍偷拍| 日韩精品一区二| 国产一级片在线播放| 欧美老女人在线视频| 欧美a在线看| 欧美精品精品精品精品免费| 日韩不卡免费高清视频| 99久久精品免费看国产四区| 国产一区二区三区四区二区| 国产又粗又猛又爽又黄的网站| 欧美国产一级| 成人中文字幕在线播放| 国产在线视频精品一区| 亚洲理论中文字幕| 337p粉嫩大胆噜噜噜噜噜91av | a级黄色小视频| 毛片一区二区三区| 精品无码人妻一区| 亚洲自拍欧美精品| 一级黄色短视频| 亚洲欧美日韩一区二区在线| 爱福利在线视频| 成人午夜小视频| 日本一区二区三区视频| 亚洲色图自拍| 久久青草久久| 大乳护士喂奶hd| 久久亚洲欧美国产精品乐播| 蜜臀av一区二区三区有限公司| 亚洲日本在线视频观看| 久久久精品毛片| 亚洲美女黄色片| 国产高清中文字幕在线| 99在线视频播放| 永久91嫩草亚洲精品人人| 欧美婷婷精品激情| 国产色综合一区| 2017亚洲天堂| 欧美伊人久久大香线蕉综合69 | 成人污版视频| 亚洲bbw性色大片| 日韩精彩视频在线观看| 国产精品揄拍100视频| 岛国av一区二区三区| 三级小视频在线观看| 欧美激情第6页| 99re8这里有精品热视频8在线| 成年在线观看视频| 国产乱码一区二区三区| 亚洲国产成人精品综合99| 精品国产乱码久久久久久天美 | 亚洲精品自拍视频| 华人av在线| 精品综合在线| 日韩大片在线| 妺妺窝人体色www在线观看| 久久久www免费人成精品| 在线观看 亚洲| 夜夜嗨av色综合久久久综合网| 日本美女一区| 日日夜夜精品网站| 久久精品久久综合| 久久精品一区二区三区四区五区 | 污污视频在线免费看| 一本色道久久88亚洲综合88| 成人免费直播| 99国产超薄肉色丝袜交足的后果| 欧美~级网站不卡| 欧美久久久久久久久久久| 五月天一区二区三区| 你懂的视频在线播放| 国产精品视频久久| 美国成人xxx| 亚洲av综合色区| 国产成人在线视频播放| 国产精品白浆一区二小说| 亚洲久久久久久久久久| 成人激情视屏| 中文字幕第50页| av电影在线观看完整版一区二区| 欧美男人亚洲天堂| 色妞久久福利网| 中文一区二区三区四区| 妞干网在线免费视频| 亚洲欧洲成人精品av97| 色欲av永久无码精品无码蜜桃| 欧美在线视频观看| 午夜精品毛片| 美女网站视频在线观看| 色www精品视频在线观看| 老司机99精品99| 久久精品国产精品青草色艺| 麻豆极品一区二区三区| 欧美黄色免费在线观看| 亚洲欧美日韩在线高清直播| 成人自拍视频| 成人免费观看视频在线观看| 国产精品毛片高清在线完整版| 亚洲精品无遮挡| 欧美成人性生活| 亚欧日韩另类中文欧美| 亚洲一区二区三区四区精品| 欧美日韩在线看| 主播国产精品| 亚洲v欧美v另类v综合v日韩v|