В настоящее время я пытаюсь преобразовать вычисление даты из javascript в java, так как я хочу использовать его для разработки Android. Итак, в javascript я использовал метод date.valueOf(), который преобразует дату в миллисекунды, прошедшие с 1 января 1970 года. В java метод с той же функциональностью называется date.getTime(). В документации по java и javascript описание точно такое же, но когда я вставляю одну и ту же дату, я получаю два совершенно разных значения.
Например:
Ява getTime()
Date date = new Date(2011, 10, 1);
System.out.println(date.getTime()); //prints: 61278249600000
Джаваскрипт valueOf()
const date = new Date(2011, 10, 1);
console.info(date.valueOf()); //prints: 1320102000000
Итак, мои вопросы:
Было бы здорово, если бы кто-нибудь мог мне помочь.
И как мне тогда преобразовать дату в миллисекунды с 1 января 1970 года?
Прочтите об API java.time
Я рекомендую в Java не использовать Date. Этот класс плохо спроектирован и давно устарел. Вместо этого используйте LocalDate и другие классы из java.time, современного API даты и времени Java.
В Java используйте LocalDate.of(2011, Month.NOVEMBER, 1).atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli(). В моем часовом поясе, Европа/Копенгаген, он дает то же число, что и в JavaScript, 1 320 102 000 000. Результат в других часовых поясах будет отличаться примерно на 13 часов.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Несоответствие не между getTime в Java и valueOf в JavaScript, а в конструкторе Java Date . Параметр года — это годы с 1900 года. Таким образом, эквивалентный код Java будет таким:
Date date = new Date(110, 10, 1);
// ^−−− 2010 - 1900
Это одна из многих причин не использовать класс java.util.Date.
Больше не используйте старый Java Date API.