На общий вопрос о различиях между java.util.Date
и java.time.LocalDate
я рекомендую вам прочитать соответствующий javadoc или статью о переходе на Java 8 time
API. Различий много: их слишком много, чтобы перечислять.
(Общая рекомендация — не использовать java.util.Date
в новом коде: относитесь к нему как к устаревшему классу.)
Что касается конкретного вопроса, который, я думаю, вы задаете о «манипулировании» часами, ОБА java.util.Date
И java.time.LocalDate
получают информацию о времени из системных часов на компьютере пользователя. Таким образом, если пользователь «манипулирует» системными часами, чтобы сообщить фиктивную информацию о времени, то оба этих класса будут сообщать эту фиктивную информацию.
В более общем смысле в библиотеке классов Java SE нет класса, который будет сообщать достоверную информацию, если пользователь манипулирует часами. (Даже если бы такой класс существовал, пользователь мог бы модифицировать соответствующую библиотеку Java, чтобы обойти это. И если вы вложили в свой код смекалку, пользователь мог бы обойти и это.)
Обратите внимание, что это не специфичная для Java проблема. Любое приложение, работающее на машине, управляемой ненадежным пользователем, может подвергнуться вмешательству... независимо от языка программирования. Если вы предоставляете пользователю свое программное обеспечение для запуска на его машине, вы уступаете ему контроль над тем, что он может с ним делать. (Если они будут достаточно стараться.)
Наконец, если проблема, которую вы пытаетесь решить, заключается в том, что локальные часы пользователя не синхронизированы с источниками времени в Интернете, на самом деле это не проблема для приложения. Пользователи (или их системные специалисты) должны решить эту проблему.
person
Stephen C
schedule
10.02.2020
java.time.LocalDate
— это дата, указанная в календаре на стене.java.util.Date
- это не дата, это мгновение, и фактически представляет миллисекундное смещение от эпохи Unix. - person Andy Turner   schedule 10.02.2020Date
в имени, и оба имеют какое-то отношение к дате и/или времени. Для начала,Date
— это момент времени, аLocalDate
— это дата.Date
плохо разработан и давно устарел, аLocalDate
современен и рекомендуется для свиданий. - person Ole V.V.   schedule 10.02.2020