type Time struct {
// содержит отфильтрованные или неэкспортированные поля
}
Time представляет собой момент времени с наносекундной точностью.
Программы, использующие времена, обычно должны хранить и передавать их как значения, а не как указатели. То есть переменные времени и поля структуры должны иметь тип time.Time, а не *time.Time.
Значение Time может использоваться несколькими программами одновременно, за исключением того, что методы GobDecode, UnmarshalBinary, UnmarshalJSON и UnmarshalText не являются безопасными для конкурентности.
Моменты Time можно сравнить с помощью методов Before, After и Equal. Метод Sub вычитает два момента, создавая Duration. Метод Add добавляет Time и Duration, создавая Time.
Нулевым значением типа Time является January 1, year 1, 00:00:00.000000000 UTC. Поскольку это время вряд ли подходит на практике, метод IsZero предоставляет простой способ обнаружения времени, которое не было явно инициализировано.
Каждое время связывает с ним Location (местоположение), к которому обращаются при расчете формы представления времени, таких методах как Format, Hour и Year. Методы Local, UTC и In возвращают Time с определенным местоположением. Изменение местоположения таким образом изменяет только представление; оно не меняет момент времени, который будет обозначен, и, следовательно, не влияет на вычисления со временем.
Представления значения Time, сохраненного методами GobEncode, MarshalBinary, MarshalJSON и MarshalText, хранят смещение Time.Location, но не имя местоположения. Поэтому они теряют информацию о переходе на летнее время.
В дополнение к требуемым показаниям "настенных часов", Time может содержать дополнительное показание монотонных часов текущего процесса, чтобы обеспечить дополнительную точность для сравнения или вычитания.
Обратите внимание, что оператор Go == сравнивает не только момент времени, но и местоположение и показания монотонных часов. Следовательно, значения времени не должны использоваться в качестве ключей карты или базы данных без предварительной гарантии того, что для всех значений было установлено одинаковое местоположение, что может быть достигнуто с помощью метода UTC или Local, и что монотонное считывание часов было удалено установкой t = t.Round(0). В общем, предпочитайте t.Equal(u), а не t == u, так как t.Equal использует наиболее точное из доступных сравнений и правильно обрабатывает случай, когда только один из его аргументов имеет монотонное чтение часов.
Читайте также:
Комментариев нет:
Отправить комментарий