我做了一個(gè)游樂(lè)場(chǎng),再現(xiàn)了我的問(wèn)題。我有一些測(cè)試失敗了,因?yàn)閖son Marshal方法在對(duì)象轉(zhuǎn)換過(guò)程中似乎會(huì)丟失精度。time.Time運(yùn)行以下代碼:package mainimport ( "fmt" "encoding/json" "time")type myStruct struct{ Now time.Time `json:"time"`}func main() { expect := &myStruct{Now: time.Now()} fmt.Println(expect.Now.String()) byteData, err := json.Marshal(expect) if err != nil { panic(err.Error()) } actual := &myStruct{} err = json.Unmarshal(byteData, &actual) if err != nil { panic(err.Error()) } fmt.Println(actual.Now.String())}輸出:2009-11-10 23:00:00 +0000 UTC m=+0.0000000012009-11-10 23:00:00 +0000 UTC問(wèn)題是,當(dāng)我運(yùn)行任何涉及對(duì)象轉(zhuǎn)換的測(cè)試時(shí),我無(wú)法使用任何標(biāo)準(zhǔn)方法來(lái)比較結(jié)果(作證,反映...)。time.Time有沒(méi)有辦法在編組對(duì)象時(shí)保持精度,或者將時(shí)間值“舍入”到較低的精度?time.Time
2 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用 或 .這將移除您的精密零件,您可以成功測(cè)試它。expect := &myStruct{Now: time.Now().Local()}
expect := &myStruct{Now: time.Now().UTC()}

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
也可以使用Time.Round:
Round 返回 t,去掉任何單調(diào)時(shí)鐘讀數(shù),但其他方面保持不變。
所以:
time.Now().Round(0)
將剝離單調(diào)偏移,使其余時(shí)間分量保持不變(時(shí)區(qū)等)
- 2 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報(bào)
0/150
提交
取消