Разница между javascript date.valueOf() и java date.getTime()

В настоящее время я пытаюсь преобразовать вычисление даты из 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

Итак, мои вопросы:

  • Почему это происходит? (или что я не так сделал?)
  • Как я могу исправить код?

Было бы здорово, если бы кто-нибудь мог мне помочь.

Больше не используйте старый Java Date API.

Jens 20.12.2020 13:17

И как мне тогда преобразовать дату в миллисекунды с 1 января 1970 года?

stnieder 20.12.2020 13:41

Прочтите об API java.time

Jens 20.12.2020 13:54
Ссылка на мастер-класс
Ole V.V. 20.12.2020 14:08

Я рекомендую в Java не использовать Date. Этот класс плохо спроектирован и давно устарел. Вместо этого используйте LocalDate и другие классы из java.time, современного API даты и времени Java.

Ole V.V. 20.12.2020 14:09

В Java используйте LocalDate.of(2011, Month.NOVEMBER, 1).atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochM‌​illi(). В моем часовом поясе, Европа/Копенгаген, он дает то же число, что и в JavaScript, 1 320 102 000 000. Результат в других часовых поясах будет отличаться примерно на 13 часов.

Ole V.V. 20.12.2020 16:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Несоответствие не между getTime в Java и valueOf в JavaScript, а в конструкторе Java Date . Параметр года — это годы с 1900 года. Таким образом, эквивалентный код Java будет таким:

Date date = new Date(110, 10, 1);
//                   ^−−− 2010 - 1900

Это одна из многих причин не использовать класс java.util.Date.

Другие вопросы по теме