精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人在线精品视频| 蜜桃视频成人m3u8| 亚洲天堂av资源在线观看| 成人国产视频在线观看| 中文字幕欧美国内| 欧美深夜福利视频| 九九久久免费视频| 福利一区在线| 久久久九九九九| 97久久伊人激情网| 极品人妻一区二区| 免费大片在线观看www| 欧美黄色影院| 一区二区成人在线视频| 91精品久久久久久久| 日本成人午夜影院| 欧美在线极品| 成人午夜电影久久影院| 免费av在线一区| 亚洲日本黄色片| a黄色在线观看| 日本大胆欧美人术艺术动态| 日韩av在线网址| 日韩欧美亚洲天堂| 无码精品一区二区三区在线| 亚洲私人影院| 欧美tk—视频vk| 99久久免费观看| www.四虎在线观看| 国模吧视频一区| 中文字幕在线看视频国产欧美| 国产伦理在线观看| 日本高清在线观看视频| 岛国av在线一区| 国产精品专区第二| 中文字幕人妻一区二| 91麻豆精品一二三区在线| 国产精品久久久久桃色tv| 国产精品青草久久久久福利99| 51妺嘿嘿午夜福利| 成人精品一区二区三区电影| 亚洲成人精品一区| 欧美成人蜜桃| 性高潮视频在线观看| 久久一区91| 91超碰这里只有精品国产| 无码人妻精品一区二区三区99v| 精品免费久久久| 久久精品国产99久久6| 免费99精品国产自在在线| 欧美三级视频网站| 国产亚洲一区| 超碰在线成人| 国产免费观看久久| 国产免费成人av| 好吊色在线视频| 久久裸体网站| 国产一区二区三区中文| www.精品在线| 免费在线观看的电影网站| 99精品视频一区| 国产美女搞久久| 精品久久久久久久久久久久久久久久| 国产日韩一区二区三区在线| 国产一区二区三区在线看| 老司机午夜性大片| 色屁屁www国产馆在线观看| 亚洲色图都市小说| 久久av一区二区| 97国产精品久久久| 一区二区日韩免费看| 日韩最新av在线| 99re久久精品国产| 国产精品毛片无码| 一本色道a无线码一区v| 国产午夜精品视频一区二区三区| 五月激情婷婷综合| 99re免费视频精品全部| 久久久久久久有限公司| 精品成人一区二区三区免费视频| 国产激情视频一区二区在线观看 | 国产日韩欧美日韩大片| 91丨九色丨蝌蚪丨对白| 国产成人精品亚洲777人妖 | 香蕉视频免费看| 久久精品视频在线免费观看| 亚洲欧洲一二三| 少妇精品高潮欲妇又嫩中文字幕| 久久精品国产一区二区三 | 亚洲精品视频专区| 久久激情五月激情| 成人动漫视频在线观看完整版| 国产精品xxxxxx| 九九**精品视频免费播放| 欧美一级高清免费| 国产真实夫妇交换视频| 日韩一区欧美| 亚洲男女性事视频| 偷偷色噜狠狠狠狠的777米奇| 国产一区二区视频在线看| 精品少妇一区二区| 久久国产柳州莫菁门| 欧美在线不卡| 久久成人免费视频| 日本二区三区视频| 色88久久久久高潮综合影院| 九九九久久久久久| 四虎免费在线视频| 欧美在线免费| 日韩女优人人人人射在线视频| 国产高潮久久久| 亚洲另类自拍| 久久免费成人精品视频| 清纯粉嫩极品夜夜嗨av| 久久精品首页| 欧美最顶级的aⅴ艳星| 国产成人在线观看网站| aa亚洲婷婷| 91啪国产在线| 成人1区2区3区| 欧美激情一区二区| 精品少妇一区二区三区在线| www999久久| 亚洲人成绝费网站色www| 三级网站在线免费观看| 视频精品在线观看| 这里精品视频免费| av中文在线播放| 国产999精品久久久久久 | 精品亚洲精品| 国产婷婷色综合av蜜臀av| 性色av蜜臀av浪潮av老女人| 久久中文字幕av| 国产成人鲁鲁免费视频a| 中文在线最新版天堂| 久久国产免费看| 欧美久久在线| 电影在线高清| 亚洲女同ⅹxx女同tv| 日本福利视频在线观看| 99riav国产精品视频| 黄色一级大片在线免费看国产一 | 久蕉依人在线视频| 亚洲午夜在线视频| 欧日韩免费视频| 久久r热视频| 精品视频免费看| 特种兵之深入敌后| 亚洲高清影视| 57pao成人国产永久免费| 午夜精品久久久久久久99热黄桃| 中文字幕在线免费不卡| 欧美一二三不卡| 国产一区二区三区国产精品| 久久久www成人免费精品张筱雨| 男的操女的网站| 精品在线观看免费| 少妇高潮流白浆| 欧美gv在线| 日韩国产高清污视频在线观看| 久草精品视频在线观看| 日韩av电影天堂| 午夜一区二区三区| 丁香花在线电影小说观看| 日本高清免费不卡视频| 九色91porny| 国产精品s色| 国产精品第一视频| 黑人精品一区二区三区| 亚洲国产va精品久久久不卡综合| 四季av综合网站| 久久av一区二区三区| 日韩欧美亚洲v片| sm国产在线调教视频| 欧美性69xxxx肥| 制服下的诱惑暮生| 激情综合亚洲| 91亚洲精品视频| 丝袜在线观看| 亚洲精品狠狠操| 国产免费久久久久| 日本欧美一区二区在线观看| 在线看视频不卡| free欧美| 精品视频www| 波多野结衣黄色| 99精品视频免费在线观看| 国产xxxxx在线观看| 97视频一区| 欧美综合第一页| 米奇精品一区二区三区| 精品国产电影一区二区| 欧美特黄一级片| 国产99精品国产| 91网址在线播放| 国产一区日韩| 亚洲一区二区三区久久| 日本不卡在线| 亚洲成人黄色网址| 国产主播在线观看| 久久精品视频免费| www.欧美黄色| 红桃成人av在线播放| 97se亚洲综合| 在线免费观看a视频| 宅男在线国产精品| 五月婷婷亚洲综合| 亚洲精品国产无天堂网2021| 天天久久综合网| 青青草91久久久久久久久| 国产做受高潮69| caoporn国产精品免费视频| 精品国产欧美一区二区| 亚洲专区第一页| 亚洲天堂成人网| 国产三级国产精品| 午夜一级久久| 欧美日韩另类丝袜其他| 日本少妇精品亚洲第一区| 久久亚洲国产精品| 午夜一区在线观看| 日韩免费性生活视频播放| 久久免费看少妇高潮v片特黄| 91在线国产福利| 美女网站视频在线观看| 韩国一区二区视频| 中文字幕超清在线免费观看| 九九久久婷婷| 精品一区二区日本| 日本免费久久| 午夜精品久久久久久久男人的天堂| 日本高清中文字幕在线| 欧美一区二区三区色| 欧美色图一区二区| 国产精品理论在线观看| 黄色片网站免费| 久久久久国产精品麻豆| 国产一级二级在线观看| av电影在线观看完整版一区二区| 无码人妻精品一区二区三区在线 | 国产无码精品在线播放| 成人福利视频网站| 一级日本黄色片| 国产午夜精品理论片在线| 国产老肥熟一区二区三区| 一区二区不卡在线观看| 91视频成人| 国产精品一区二区三区毛片淫片 | 五月激情六月婷婷| 亚洲精品videossex少妇| 天堂av中文字幕| 日韩成人在线播放| 亚洲欧美日韩精品永久在线| 亚洲国内精品在线| 无码国产精品高潮久久99| 日韩黄在线观看| 日韩有码电影| 欧美狂野另类xxxxoooo| 久久精品免费在线| 亚洲国产视频在线| 日韩精品一区二区av| 亚洲成人激情综合网| 欧美福利视频一区二区| 黑人巨大精品欧美一区二区免费| 国产精品情侣呻吟对白视频| 国产成人精品综合在线观看| 无套内谢丰满少妇中文字幕| 国产精品一区在线观看你懂的| 国产一级二级av| 成人激情校园春色| 全黄一级裸体片| 中文字幕av一区二区三区高| 91成人在线观看喷潮蘑菇| 懂色中文一区二区在线播放| 偷偷色噜狠狠狠狠的777米奇| 正在播放一区二区三区| 日韩成人av在线资源| 欧美激情区在线播放| 天堂v视频永久在线播放| 欧美无砖砖区免费| 国产无码精品视频| 一本久久综合亚洲鲁鲁五月天| 免费黄色一级大片| 欧美日韩一区二区三区四区不卡 | 国产网红主播福利一区二区| 国产又黄又粗又猛又爽的| 粉嫩一区二区三区性色av| 欧美xxxx×黑人性爽| 国产视频在线观看一区二区三区| 久久久久久久久久97| 图片区日韩欧美亚洲| 永久免费看黄网站| 欧美日韩一区免费| 国产精品久久无码一三区| 一本久道中文字幕精品亚洲嫩| 在线免费a视频| 亚洲国产天堂久久综合| 日本在线天堂| 性色av一区二区咪爱| av成人在线播放| 国产亚洲精品自在久久| 色视频在线看| 久久五月天色综合| 欧美成人免费电影| av一区和二区| 久久婷婷蜜乳一本欲蜜臀| 久久亚洲中文字幕无码| 久久99久久久久久久久久久| 在线免费观看a级片| 亚洲欧美在线另类| 国产又粗又长又硬| 国产精品免费aⅴ片在线观看| 欧美日韩免费一区二区| 欧美在线观看视频一区二区三区| 欧美特黄一级视频| 亚洲国产精品yw在线观看 | 国产精品免费久久久久| 69视频免费在线观看| 欧美小视频在线观看| www.五月激情| 日韩专区在线观看| 亚洲第一会所| 久久综合福利| 亚洲激情另类| 丰满少妇一区二区三区专区| 国产精品久久久久永久免费观看| 亚洲午夜18毛片在线看| 精品国产乱子伦一区| 成人ww免费完整版在线观看| 国产精品黄视频| 国产精品密蕾丝视频下载| 奇米精品一区二区三区| 不卡一二三区首页| 久久久久久久久精| 欧美日韩国产一区二区三区| 91欧美精品成人综合在线观看| 亚洲婷婷丁香| 欧美黑人xxxxx| 亚洲精选在线| 黄色免费视频网站| 亚洲成人一区二区| www.五月婷婷| 欧美国产日韩一区| 中文字幕区一区二区三| 日韩久久久久久久久久久久| 国产乱理伦片在线观看夜一区| 天天看天天摸天天操| 欧美精品三级在线观看| 日本黄色片在线播放| 亚洲伦理在线精品| 国产婷婷在线视频| 欧美精品一区男女天堂| 在线电影福利片| 成人在线看片| 精品国产一区二区三区四区| 强开小嫩苞一区二区三区网站| 成人在线观看一区| 国产a级全部精品| 欧美手机视频| 中文字幕中文在线| 亚洲精品网站在线观看| 性生活视频软件| 亚州精品天堂中文字幕| 奇米777国产一区国产二区| 精品国产一二三四区| 久久久国产精品午夜一区ai换脸| 丁香社区五月天| 三级精品视频久久久久| 日本中文字幕中出在线| 99久热re在线精品996热视频 | 国产freexxxx性播放麻豆| 久久久噜噜噜久久狠狠50岁| www.av欧美| 欧美区一区二区三区| 久久综合九色综合久| 欧美激情精品久久久| 国内精品国产成人国产三级粉色| 亚洲一区二区精品在线观看| 韩国欧美国产1区| 国产真实乱偷精品视频| 亚洲人成五月天| 亚洲最大的免费视频网站| 隔壁人妻偷人bd中字| 久久亚洲一级片| 国产一级性生活| 亚洲人精品午夜在线观看| 国产成人免费av一区二区午夜| 很污的网站在线观看| 国产色婷婷亚洲99精品小说| 国产xxxx在线观看| 久久精品99久久久香蕉| 99国产精品久久一区二区三区| 国产乱子夫妻xx黑人xyx真爽| 国产精品看片你懂得| 在线观看亚洲国产| 亚洲成在线观看| 精品视频一二三| 91视频国产精品| 亚洲影视综合| 成人在线观看小视频|