亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在編組時間時避免精度損失。時間對象

在編組時間時避免精度損失。時間對象

Go
元芳怎么了 2022-08-30 21:11:41
我做了一個游樂場,再現了我的問題。我有一些測試失敗了,因為json Marshal方法在對象轉換過程中似乎會丟失精度。time.Time運行以下代碼: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問題是,當我運行任何涉及對象轉換的測試時,我無法使用任何標準方法來比較結果(作證,反映...)。time.Time有沒有辦法在編組對象時保持精度,或者將時間值“舍入”到較低的精度?time.Time
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

使用 或 .這將移除您的精密零件,您可以成功測試它。expect := &myStruct{Now: time.Now().Local()}expect := &myStruct{Now: time.Now().UTC()}



查看完整回答
反對 回復 2022-08-30
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

也可以使用Time.Round

Round 返回 t,去掉任何單調時鐘讀數,但其他方面保持不變。

所以:

time.Now().Round(0)

將剝離單調偏移,使其余時間分量保持不變(時區等)


查看完整回答
反對 回復 2022-08-30
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號