最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

提升編程技能:學(xué)習(xí)如何在Go語言中正確格式化時(shí)間

 更新時(shí)間:2024年01月16日 08:37:04   作者:白如意i  
想知道如何在Go語言中輕松地格式化時(shí)間嗎?別再浪費(fèi)時(shí)間了!本文將帶你快速入門,讓你的代碼更加優(yōu)雅高效,快來學(xué)習(xí)吧!

先來看一個(gè)簡(jiǎn)單的例子:

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now().Format("2006"))
}

我們會(huì)覺得這會(huì)輸出什么呢?輸出的是 2022,也就是當(dāng)前年份。

另一個(gè)例子:

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}

輸出:2022-08-04 09:43:56

如果之前寫其他語言的,看到這個(gè)結(jié)果估計(jì)和我一樣覺得百思不得其解,為什么不是 Y-m-d H:i:s 這種格式呢?而且那個(gè)參數(shù)看起來就是一個(gè)時(shí)間戳。

那個(gè)參數(shù)真的是時(shí)間戳嗎?

答案我們可以點(diǎn)開 Format 的源碼看看就知道了:

func (t Time) Format(layout string) string {
	// ... 省略,下面這個(gè)調(diào)用才是關(guān)鍵
	b = t.AppendFormat(b, layout)
	// ... 省略
}

我們看到 Format 里面具體處理邏輯在 AppendFormat 函數(shù)里面,再點(diǎn)開 AppendFormat 看看:

switch std & stdMask {
    case stdYear:
        y := year
        if y < 0 {
            y = -y
        }
        b = appendInt(b, y%100, 2)
    case stdLongYear:
        b = appendInt(b, year, 4)
    case stdMonth:
        b = append(b, month.String()[:3]...)
    case stdLongMonth:
        m := month.String()
        b = append(b, m...)
    // ... 省略其他 case
}

我們可以看到里面的 stdYear、stdLongYear 之類的常量實(shí)際上就是我們傳入到 Format 的參數(shù)里面的數(shù)字。

const (
	_                        = iota
	stdLongMonth             = iota + stdNeedDate  // "January"
	stdMonth                                       // "Jan"
	stdNumMonth                                    // "1"
	stdZeroMonth                                   // "01"
	stdLongWeekDay                                 // "Monday"
	stdWeekDay                                     // "Mon"
	stdDay                                         // "2"
	stdUnderDay                                    // "_2"
	stdZeroDay                                     // "02"
	stdUnderYearDay                                // "__2"
	stdZeroYearDay                                 // "002"
	stdHour                  = iota + stdNeedClock // "15"
	stdHour12                                      // "3"
	stdZeroHour12                                  // "03"
	stdMinute                                      // "4"
	stdZeroMinute                                  // "04"
	stdSecond                                      // "5"
	stdZeroSecond                                  // "05"
	stdLongYear              = iota + stdNeedDate  // "2006"
	stdYear                                        // "06"
	stdPM                    = iota + stdNeedClock // "PM"
	stdpm                                          // "pm"
	stdTZ                    = iota                // "MST"
	stdISO8601TZ                                   // "Z0700"  // prints Z for UTC
	stdISO8601SecondsTZ                            // "Z070000"
	stdISO8601ShortTZ                              // "Z07"
	stdISO8601ColonTZ                              // "Z07:00" // prints Z for UTC
	stdISO8601ColonSecondsTZ                       // "Z07:00:00"
	stdNumTZ                                       // "-0700"  // always numeric
	stdNumSecondsTz                                // "-070000"
	stdNumShortTZ                                  // "-07"    // always numeric
	stdNumColonTZ                                  // "-07:00" // always numeric
	stdNumColonSecondsTZ                           // "-07:00:00"
	stdFracSecond0                                 // ".0", ".00", ... , trailing zeros included
	stdFracSecond9                                 // ".9", ".99", ..., trailing zeros omitted

	stdNeedDate       = 1 << 8             // need month, day, year
	stdNeedClock      = 2 << 8             // need hour, minute, second
	stdArgShift       = 16                 // extra argument in high bits, above low stdArgShift
	stdSeparatorShift = 28                 // extra argument in high 4 bits for fractional second separators
	stdMask           = 1<<stdArgShift - 1 // mask out argument
)

所以,其實(shí)答案已經(jīng)有了,我們對(duì)照一下我們的參數(shù) 2006-01-02 15:04:05,可以很簡(jiǎn)單在上述常量里面找到對(duì)應(yīng)的常量:

  • 2006 => stdLongYear
  • 01 => stdZeroMonth
  • 02 => stdZeroDay
  • 15 => stdHour
  • 04 => stdZeroMinute
  • 05 => stdZeroSecond

而 layout 參數(shù)里面的 - 以及 : 都會(huì)原樣輸出。

根據(jù)給出的這些常量,我們就可以將時(shí)間格式化為我們想要的格式了。

到此這篇關(guān)于提升編程技能:學(xué)習(xí)如何在Go語言中正確格式化時(shí)間的文章就介紹到這了,更多相關(guān)go 格式化時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言中的recover()函數(shù)用法解讀

    Go語言中的recover()函數(shù)用法解讀

    Go語言recover()用于捕獲panic,需與defer配合使用,在defer中調(diào)用時(shí)返回panic值,否則返回nil,Go1.21后panic(nil)觸發(fā)runtime panic,recover返回*runtime.PanicNilError,應(yīng)僅用于處理意外情況,注意作用域限制及性能影響
    2025-07-07
  • 從零封裝Gin框架實(shí)現(xiàn)數(shù)據(jù)庫初始化GORM

    從零封裝Gin框架實(shí)現(xiàn)數(shù)據(jù)庫初始化GORM

    這篇文章主要為大家介紹了從零封裝Gin框架實(shí)現(xiàn)數(shù)據(jù)庫初始化GORM,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang觀察者模式優(yōu)化訂單處理系統(tǒng)實(shí)例探究

    Golang觀察者模式優(yōu)化訂單處理系統(tǒng)實(shí)例探究

    當(dāng)涉及到訂單處理系統(tǒng)時(shí),觀察者設(shè)計(jì)模式可以用于實(shí)現(xiàn)訂單狀態(tài)的變化和通知,在這篇文章中,我們將介紹如何使用Golang來實(shí)現(xiàn)觀察者設(shè)計(jì)模式,并提供一個(gè)基于訂單處理系統(tǒng)的代碼示例
    2024-01-01
  • Golang內(nèi)存分配機(jī)制詳解

    Golang內(nèi)存分配機(jī)制詳解

    Go 語言的內(nèi)存分配機(jī)制是理解和優(yōu)化 Go 程序性能的關(guān)鍵,在 Go 中,內(nèi)存管理是自動(dòng)進(jìn)行的,這得益于 Go 的垃圾回收機(jī)制,了解內(nèi)存如何分配和回收,可以幫助我們寫出更高性能的代碼,本文將深入講解下 Go 內(nèi)存分配機(jī)制,需要的朋友可以參考下
    2023-12-12
  • Go環(huán)境變量配置,及GOROOT、GOPATH的區(qū)別小結(jié)

    Go環(huán)境變量配置,及GOROOT、GOPATH的區(qū)別小結(jié)

    本文主要介紹了Go環(huán)境變量配置,及GOROOT、GOPATH的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • 在Go語言程序中使用gojson來解析JSON格式文件

    在Go語言程序中使用gojson來解析JSON格式文件

    這篇文章主要介紹了在Go語言程序中使用gojson來解析JSON格式文件的方法,Go是由Google開發(fā)的高人氣新興編程語言,需要的朋友可以參考下
    2015-10-10
  • Go設(shè)計(jì)模式之備忘錄模式講解和代碼示例

    Go設(shè)計(jì)模式之備忘錄模式講解和代碼示例

    備忘錄是一種行為設(shè)計(jì)模式, 允許生成對(duì)象狀態(tài)的快照并在以后將其還原,本文就通過代碼示例給大家講講Go備忘錄模式,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • golang語言中for循環(huán)語句用法實(shí)例

    golang語言中for循環(huán)語句用法實(shí)例

    這篇文章主要介紹了golang語言中for循環(huán)語句用法,實(shí)例分析了for循環(huán)遍歷的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • go語言使用RocketMq的示例代碼

    go語言使用RocketMq的示例代碼

    這篇文章主要介紹了go語言使用RocketMq的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • 文字解說Golang Goroutine和線程的區(qū)別

    文字解說Golang Goroutine和線程的區(qū)別

    goroutine 是 Go語言中的輕量級(jí)線程實(shí)現(xiàn),由 Go 運(yùn)行時(shí)(runtime)管理,使用每一個(gè) go 關(guān)鍵字將會(huì)額外開啟一個(gè)新的協(xié)程 goroutine,今天通過本文給大家介紹下Golang Goroutine和線程的區(qū)別,感興趣的朋友一起看看吧
    2022-03-03

最新評(píng)論

即墨市| 丰县| 德安县| 仁怀市| 独山县| 白朗县| 陵水| 山丹县| 彭州市| 澄迈县| 洪雅县| 商丘市| 金溪县| 北票市| 桐梓县| 浙江省| 丁青县| 太仓市| 马尔康县| 永宁县| 威信县| 叶城县| 南召县| 游戏| 柳州市| 聂荣县| 和田县| 肇东市| 安新县| 东山县| 驻马店市| 盘山县| 牡丹江市| 南江县| 保靖县| 西青区| 彭泽县| 丹东市| 顺义区| 青田县| 肥城市|