2 回答

TA貢獻1946條經(jīng)驗 獲得超3個贊
根據(jù)文檔,該m
值是單調(diào)時鐘值,可以將其刪除用于Truncate
比較而不是出于計時目的。該m
字段不匹配,因為它從 JSON 中省略,它僅由time.Now()
.
像這樣嘗試:
// values
now := time.Now().Truncate(0)? // Truncate to remove monotonic clock portion
timeToJSON, _ := json.Marshal(now)
var obj time.Time
json.Unmarshal(timeToJSON, &obj)
添加單調(diào)時鐘偏移是為了允許準確計時跨越掛鐘更改(例如 NTP 更新、DST 更改或閏秒/拖尾)的持續(xù)時間。

TA貢獻1809條經(jīng)驗 獲得超8個贊
time.String()
不是測試時間值的可靠方法(除非您也關(guān)心單調(diào)時鐘值)。來自文檔(添加了重點):
func(時間)字符串
func?(t?Time)?String()?string
String 返回使用格式字符串格式化的時間
"2006-01-02?15:04:05.999999999?-0700?MST"
如果時間具有單調(diào)時鐘讀數(shù),則返回的字符串包含最終字段“m=±”,其中值是格式為十進制秒數(shù)的單調(diào)時鐘讀數(shù)。
返回的字符串用于調(diào)試;對于穩(wěn)定的序列化表示,使用帶有顯式格式字符串的 t.MarshalText、t.MarshalBinary 或 t.Format。
對于您的用例,最好使用的輸出time.MarshalText()
而不是time.String()
:
expected,?_?:=?now.MarshalText() actual,?_?:=?obj.MarshalText() if?!assert.Equal(string(expected),?string(actual))?...
- 2 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報