Почему момент js дает разные миллисекунды? - PullRequest
0 голосов
/ 05 ноября 2018

Я получаю ошибку другой миллисекунды той же даты, используя момент js.

Я получаю данные с сервера ('-2208988800000'). Я конвертировал значение в 'DD-MMM-YYYY'. Теперь я хочу снова ту же миллисекунду, почему я получаю разные миллисекунды одной и той же даты? Вот мой код

http://plnkr.co/edit/1QoWLoFqkNAe2ebZ0V01?p=preview

У меня две консоли x1 и x2. Они разные, почему?

var x = '-2208988800000'
var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY'));
console.log(d)
var x2 = moment(new Date(d).toUTCString()).format('x');
console.log(x2)
// why x1 and x2 is different
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

Как я могу получить то же значение?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Когда вы форматируете дату в DD-MMM-YYYY, вы теряете часы и минуты, это одна из причин

Попробуйте обновить код до

var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY HH:mm:ss'));

и вы получите метку времени, которая ближе

0 голосов
/ 05 ноября 2018

У вас ужасное количество манипуляций между мгновенными объектами, объектами даты и строками. Неясно, чего вы на самом деле хотите достичь, но ничего из этого не должно быть необходимым.

Что касается результата, первый вызов конструктора даты получает строковое значение '31-Dec-1899', и, таким образом, вы можете уменьшить пример до:

var d = new Date('31-Dec-1899');
console.log(+d);

Это даст разные результаты в зависимости от того, какой браузер вы используете (поскольку реализация синтаксического анализа по объекту даты зависит от реализации, когда не в стандартном формате), и она будет зависеть от часового пояса, в котором выполняется код ( потому что предполагается, что значение соответствует местному времени).

Для меня, работающего в Chrome 70 на Windows 10, в часовом поясе Тихоокеанского региона США, этот журнал -2209046400000. Вы можете получить разные результаты.

В общем, не делайте так много манипуляций. Большинство функций, которые вы можете захотеть, встроены в Moment. Каждый раз, когда вы обнаруживаете, что преобразуете в строки и возвращаетесь в объекты или используете конструктор Date, вы, вероятно, вносите ошибки.

...