欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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,可以很簡單在上述常量里面找到對(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)文章

  • golang實(shí)現(xiàn)跨域訪問的方法

    golang實(shí)現(xiàn)跨域訪問的方法

    這篇文章主要介紹了golang實(shí)現(xiàn)跨域訪問的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • golang交叉編譯詳細(xì)

    golang交叉編譯詳細(xì)

    Golang 支持交叉編譯,在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)的可執(zhí)行程序,只需要按照我下面的這個(gè)環(huán)境變量表設(shè)置對(duì)應(yīng)的環(huán)境變量就可以了,下面文章將對(duì)該內(nèi)容做詳細(xì)介紹,感興趣的小伙伴可以參考一下
    2021-10-10
  • 詳解Golang中的Mutex并發(fā)原語

    詳解Golang中的Mutex并發(fā)原語

    Mutex?是?Go?語言中互斥鎖的實(shí)現(xiàn),它是一種同步機(jī)制,用于控制多個(gè)?goroutine?之間的并發(fā)訪問。本文將著重介紹?Go?的?Mutex?并發(fā)原語,希望對(duì)大家有所幫助
    2023-03-03
  • go語言map字典刪除操作的方法

    go語言map字典刪除操作的方法

    這篇文章主要介紹了go語言map字典刪除操作的方法,實(shí)例分析了map字典操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 利用Go語言搭建WebSocket服務(wù)端方法示例

    利用Go語言搭建WebSocket服務(wù)端方法示例

    這篇文章主要給大家介紹了利用Go語言搭建WebSocket服務(wù)端方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • Gin框架使用panic處理中間件問題詳解

    Gin框架使用panic處理中間件問題詳解

    這篇文章主要介紹了Gin框架使用panic處理中間件問題,在 Gin 框架中,錯(cuò)誤處理和 panic 處理是非常重要的功能。當(dāng)處理 HTTP 請(qǐng)求時(shí),可能會(huì)出現(xiàn)各種各樣的錯(cuò)誤,例如數(shù)據(jù)庫連接錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤、權(quán)限問題等等
    2023-04-04
  • Go語言題解LeetCode455分發(fā)餅干示例詳解

    Go語言題解LeetCode455分發(fā)餅干示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode455分發(fā)餅干示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • golang gopm get -g -v 無法獲取第三方庫的解決方案

    golang gopm get -g -v 無法獲取第三方庫的解決方案

    這篇文章主要介紹了golang gopm get -g -v 無法獲取第三方庫的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang單元測(cè)試與覆蓋率的實(shí)例講解

    Golang單元測(cè)試與覆蓋率的實(shí)例講解

    這篇文章主要介紹了Golang單元測(cè)試與覆蓋率的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Golang switch語句的具體使用

    Golang switch語句的具體使用

    switch 語句提供了一種簡潔的方式來執(zhí)行多路分支選擇,本文主要介紹了Golang switch語句的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08

最新評(píng)論