Класс Instant
имеет дело с абсолютным временем и пытается избежать всех неясностей, связанных с тем, как различные календарные системы, регионы и культуры группируют и интерпретируют его.
Некоторые календарные системы имеют разную продолжительность недели, некоторые имеют разную группировку месяцев, имеют годы, начинающиеся с другой даты, и корректируются на високосные годы и високосные секунды по-разному (если вообще, как в случае сЮлианский календарь, в котором было слишком много високосных лет и который дрейфовал от «физических» явлений, с которыми они должны были быть синхронизированы, как времена года, солнцестояния и равноденствия).
Чтобы избежать этих проблем, класс Instant
позволяет вам использовать более точно определенные и стандартизированные единицы измерения, такие как секунды, минуты, часы и дни.
В Java «сглаживаются» дополнительные секунды за последние 1000 секунд дня, в который они происходят, поэтому с точки зрения программиста их не существует.(Компьютерные часы в любом случае не столь точны, и их необходимо часто синхронизировать с NTP.)
1 день считается равным 24 часам СИ, при этом 1 час СИ определяется как 60 минут СИ, 1 минута СИ определяется как 60Секунды СИ и 1 секунда СИ составляют 9 192 631 770 периодов излучения цезия-133.24 часа - это на самом деле средний солнечный день (время, прошедшее между двумя последовательными «полуднями»), потому что из-за эллиптических орбит, орбиты самого Солнца и колебаний скорости орбиты каждый солнечный день может быть немного длиннее или короче.
Одна важная вещь, о которой вы должны быть осторожны, это летнее время.В эти особые дни день составляет 25 или 23 часа, в зависимости от того, в каком направлении движутся часы.Однако класс Instant
не заботится об этом, он все равно будет двигаться 24 часа, если вы добавите 1 день к границе летнего времени.Он не несет никакой временной зоны или региональной информации (летнее время зависит от страны).