第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go time.Time.UTC() 有時(shí)給出 7 位數(shù),有時(shí)給出 9

Go time.Time.UTC() 有時(shí)給出 7 位數(shù),有時(shí)給出 9

Go
炎炎設(shè)計(jì) 2023-06-19 13:49:55
我發(fā)現(xiàn)該方法的輸出有些不一致time.Now().UTC()。有時(shí)我得到這個(gè):"created": "2018-10-18T08:50:33.636433623Z"有時(shí)我得到這個(gè):"created": "2019-05-10T08:16:07.871395Z",不同之處在于最后一部分的位數(shù)。為什么這不一致?有誰知道我如何調(diào)試/確保它確實(shí)一致?
查看完整描述

1 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

當(dāng)您在秒的小數(shù)部分看到較少的數(shù)字時(shí),那是因?yàn)樗鼘⒁粤憬Y(jié)尾,將它們排除在外并不會(huì)改變時(shí)間值。

看起來您是通過將一些值(包含時(shí)間戳)編組到 JSON 來生成這些輸出的。a 的 JSON 表示time.Time“受”于Time.MarshalJSON()

時(shí)間是 RFC 3339 格式的帶引號(hào)的字符串,如果存在則添加亞秒級(jí)精度。

看這個(gè)例子:

t1 := time.Date(2019, 5, 10, 11, 12, 13, 123456789, time.UTC)

fmt.Println(t1)


t2 := time.Date(2019, 5, 10, 11, 12, 13, 123456700, time.UTC)

fmt.Println(t2)

這輸出:


2019-05-10 11:12:13.123456789 +0000 UTC

2019-05-10 11:12:13.1234567 +0000 UTC

將它們編組為 JSON:


data, err := json.Marshal(t1)

fmt.Println(string(data), err)

data, err = json.Marshal(t2)

fmt.Println(string(data), err)

給出輸出:


"2019-05-10T11:12:13.123456789Z" <nil>

"2019-05-10T11:12:13.1234567Z" <nil>

t1 := time.Date(2019, 5, 10, 11, 12, 13, 123456789, time.UTC)

fmt.Println(t1)


t2 := time.Date(2019, 5, 10, 11, 12, 13, 123456700, time.UTC)

fmt.Println(t2)

這輸出:


2019-05-10 11:12:13.123456789 +0000 UTC

2019-05-10 11:12:13.1234567 +0000 UTC

將它們編組為 JSON:


data, err := json.Marshal(t1)

fmt.Println(string(data), err)

data, err = json.Marshal(t2)

fmt.Println(string(data), err)

給出輸出:


"2019-05-10T11:12:13.123456789Z" <nil>

"2019-05-10T11:12:13.1234567Z" <nil>

t1 := time.Date(2019, 5, 10, 11, 12, 13, 123456789, time.UTC)

fmt.Println(t1)


t2 := time.Date(2019, 5, 10, 11, 12, 13, 123456700, time.UTC)

fmt.Println(t2)

這輸出:


2019-05-10 11:12:13.123456789 +0000 UTC

2019-05-10 11:12:13.1234567 +0000 UTC

將它們編組為 JSON:


data, err := json.Marshal(t1)

fmt.Println(string(data), err)

data, err = json.Marshal(t2)

fmt.Println(string(data), err)

給出輸出:


"2019-05-10T11:12:13.123456789Z" <nil>

"2019-05-10T11:12:13.1234567Z" <nil>

如果您希望零出現(xiàn)在輸出中,請(qǐng)time.Format()在第二個(gè)分?jǐn)?shù)的格式字符串中使用和在輸出中使用盡可能多的數(shù)字的零。這記錄在time包中:常量:

小數(shù)點(diǎn)后跟一個(gè)或多個(gè)零表示小數(shù)秒,打印到給定的小數(shù)位數(shù)。小數(shù)點(diǎn)后跟一個(gè)或多個(gè)九表示小數(shù)秒,打印到給定的小數(shù)位數(shù),并刪除尾隨零。


Time.MarshalJSON()用途time.RFC3339Nano是:


RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

所以尾隨零被刪除。如果您在格式中使用零而不是九:


fmt.Println(t2.Format("2006-01-02T15:04:05.000000000Z"))

這輸出:


2019-05-10T11:12:13.123456700Z

嘗試Go Playground上的示例。

小數(shù)點(diǎn)后跟一個(gè)或多個(gè)零表示小數(shù)秒,打印到給定的小數(shù)位數(shù)。小數(shù)點(diǎn)后跟一個(gè)或多個(gè)九表示小數(shù)秒,打印到給定的小數(shù)位數(shù),并刪除尾隨零。


Time.MarshalJSON()用途time.RFC3339Nano是:


RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

所以尾隨零被刪除。如果您在格式中使用零而不是九:


fmt.Println(t2.Format("2006-01-02T15:04:05.000000000Z"))

這輸出:


2019-05-10T11:12:13.123456700Z

嘗試Go Playground上的示例。

小數(shù)點(diǎn)后跟一個(gè)或多個(gè)零表示小數(shù)秒,打印到給定的小數(shù)位數(shù)。小數(shù)點(diǎn)后跟一個(gè)或多個(gè)九表示小數(shù)秒,打印到給定的小數(shù)位數(shù),并刪除尾隨零。


Time.MarshalJSON()用途time.RFC3339Nano是:


RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

所以尾隨零被刪除。如果您在格式中使用零而不是九:


fmt.Println(t2.Format("2006-01-02T15:04:05.000000000Z"))

這輸出:


2019-05-10T11:12:13.123456700Z

嘗試Go Playground上的示例。



查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)