В чем разница между time.Now () и time.Now (). Local ()? - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь понять, в чем разница между time.Now() и time.Now().Local().Я начал с распечатки их на своем ноутбуке (с Ubuntu 18.04):

fmt.Println(time.Now())
fmt.Println(time.Now().Local())

, что дает мне

2018-12-23 19:57:08.606595466 +0100 CET m=+0.000583834
2018-12-23 19:57:08.606667843 +0100 CET

Я не уверен, что такое m=+0.000583834.Может быть, разница между моей машиной и NTP-серверами?

Затем я проверил документы по .Now() и .Local(), которые гласили:

Теперь возвращает текущий локальныйвремя.

и

Local возвращает t с местоположением, установленным на местное время.

Они оба возвращают местное время, поэтому яЯ до сих пор не уверен, в чем разница.Я пытался искать вокруг, но я не мог найти конкретные ответы.

Может ли кто-нибудь пролить свет на это?

1 Ответ

0 голосов
/ 23 декабря 2018

time.Now().Local() устанавливает время Местоположение по местному времени.time.Now() уже настроено на местное время, поэтому нет никакого чистого эффекта, кроме m бит.

Часть m представляет собой Монотонные часы .

Операционные системы предоставляют как «настенные часы», которые могут быть изменены для синхронизации часов, так и «монотонные часы», которых нет.Общее правило заключается в том, что настенные часы предназначены для определения времени, а монотонные часы - для измерения времени.

Монотонные часы - это простой подсчет с момента запуска программы.m=+0.000583834 говорит, что время составляет 0.000583834 секунд после запуска программы.

time.Now().Local() явно снимает монотонные часы ...

Поскольку t.In, t.Local и t.UTC используются для их влияния на интерпретацию времени стены, они также лишают любые монотонные показания часов из своих результатов.Канонический способ снять монотонное чтение часов - использовать t = t.Round (0).

...