我将日期保存在JSON中,当我重新加载它时,它看起来几乎是相同的……“ m = + 2.58”是什么? [重复]



此问题已经存在 在这里有答案:</ p>





  • 来自时间的意外输出。时间



    3个答案
    </ span>

    < / li>

    </ ul>

    </ div>

    我正在用Golang编写测试,以验证磁盘上的日志是否得到了正确管理。 当我查看文件时,我看到的是正确的日期,但是当我查看测试中的日期和从JSON重新加载的日期时,它们看起来是不同的:</ p>

    使用< code> time.Now()</ code>:</ p>

      2019-08-06 00:17:46.0​​33527441 -0700 PDT m = + 2.582718548 
    </ code> < / pre>

    我从JSON重新加载的时间戳:</ p>

      2019-08-06 00:17:46.0​​33527441 -0700 PDT 
    </ code> </ pre>

    如果我将日期更改为 UTC()</ code>,则所有操作均按预期进行(即,以 time.Now()。UTC()< / code>)。</ p>

    我知道位置不同,只是不太确定 m = ... </ code>参数代表什么,为什么? 因为它是完全相同的日期,所以它在我从JSON重新加载的日期中不会存在。</ p>

    所以...那个字段是什么?</ p>
    </ div>

展开原文

原文

This question already has an answer here:

I'm writing a test in Golang which verifies that a journal on disk is properly managed. When I look at the file I see the correct date, but when I look at the date in the test and the date I reload from JSON, they look different:

Timestamp I got with time.Now():

2019-08-06 00:17:46.033527441 -0700 PDT m=+2.582718548

Timestamp I reloaded from the JSON:

2019-08-06 00:17:46.033527441 -0700 PDT

If I change the date to UTC(), it all works as expected (i.e. start with time.Now().UTC()).

I understand that the location is different, I'm just not too sure what the m=... parameter stands for and why would it not be present in the date I reloaded from JSON since it is the exact same date.

So... What is that field?

</div>

doujiling4377
doujiling4377 “Time.Equal()忽略单调时钟吗?”是。Time.Equal只关心相等的时间瞬间,单调时钟读数与显示一天中的时间无关(无用,甚至是无用)。仅用于测量持续时间,即两次时间测量之间的差(使用time.Now()或等效值获取的值)才有用。
11 个月之前 回复
duandanai6470
duandanai6470 所以...Time.Equal()忽略单调时钟?我猜我当时在assert库中遇到了某种形式的错误……有趣的是关于Cloudflare的阅读,尽管我知道时间可能会永远倒退(例如,我将时钟更改为过去的日期,并且在某些情况下造成了混乱)电脑...)
11 个月之前 回复
dpyu7978
dpyu7978 这是单调的时钟读数。使用Time.Equal比较时间值。请参阅Cloudflare的此博客文章,其中描述了促使添加Go的问题。
11 个月之前 回复

1个回答



  fmt.Println(time.Now()。String())
</ code> </ pre> \ n

字符串返回使用格式字符串“ 2006-01-02
15:04:05.999999999 -0700 MST”格式化的时间,如果该时间具有单调时钟
读数,则返回 字符串包括最后一个字段“ m =±”,
,其中value是单调时钟读数,格式为十进制
秒数。 返回的字符串用于调试; 对于
稳定的序列化表示形式,请使用t.MarshalText,t.MarshalBinary,
或t.Format(带有显式格式字符串)。</ p>
</ blockquote>

参考 </ p>


单音时钟 </ h3>


运行中 系统既提供“挂钟”(该时钟可能会更改以进行时钟同步),又提供“单调时钟”(该时钟不会更改)。 一般规则是壁钟用于指示时间,单调时钟用于测量时间。

而不是拆分API,而是在该程序包中按时间返回时间。现在
既包含挂钟读数又包含单调时钟读数;
以后的时间记录操作将使用挂钟读数,但时间较晚
测量操作,特别是比较和减法,
使用单调时钟读数。</ p>
</ blockquote>
</ div>

展开原文

原文

fmt.Println(time.Now().String())

String returns the time formatted using the format string "2006-01-02 15:04:05.999999999 -0700 MST" If the time has a monotonic clock reading, the returned string includes a final field "m=±", where value is the monotonic clock reading formatted as a decimal number of seconds. The returned string is meant for debugging; for a stable serialized representation, use t.MarshalText, t.MarshalBinary, or t.Format with an explicit format string.

Reference


Monotonic Clocks

Operating systems provide both a “wall clock,” which is subject to changes for clock synchronization, and a “monotonic clock,” which is not. The general rule is that the wall clock is for telling time and the monotonic clock is for measuring time. Rather than split the API, in this package the Time returned by time.Now contains both a wall clock reading and a monotonic clock reading; later time-telling operations use the wall clock reading, but later time-measuring operations, specifically comparisons and subtractions, use the monotonic clock reading.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问