JavaScript новый Date () с одним параметром не работает должным образом на Glitch - PullRequest
0 голосов
/ 05 июля 2018

Я работаю над микросервисом временной метки на Glitch.me и столкнулся с проблемой, когда я передаю одно число в новый конструктор Date (). Согласно документам, одно число рассматривается как миллисекунды, но на Glitch это год:

 new Date(6546)

автоматически преобразуется в «6546-01-01T00: 00: 00.000Z»

Фактический код:

app.get("/api/timestamp/:date_string", function(req, res) {
  let d = new Date(req.params.date_string);
  if (d == null || d == "Invalid Date") {
    res.json({
      unix: null,
      utc: "Invalid Date"
    });
  } else {
    res.json({
      test: new Date(req.params.date_string),
      unix: d.getTime(),
      utc: d.toUTCString()
    });
  }
});

Как я мог решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Обратите внимание, что когда в конструкторе передается один числовой аргумент , он принимается как внутреннее числовое представление даты в миллисекундах. Обратите внимание, что мы не передаем строку в конструктор Например, передача аргумента 5000 создает дату, которая представляет пять секунд после полуночи 01.01.1970.

Для вашего случая 6546 миллисекунд, что составляет 6,546 секунды, вернет ту же дату 01.01.1970, потому что нет большой разницы, когда вы добавляете 5 секунд от этой даты.

но теперь, если вы передадите «6546» миллисекунды в виде строки в конструктор, она будет обрабатываться как год 6546, и вы получите результат как 6546-01-01T00: 00: 00.000Z. Проверьте, передаете ли вы числовое значение, а не строку и правильно ли рассчитано значение в миллисекундах. Справка: https://www.tutorialspoint.com/javascript/javascript_date_object.htm

Попробуйте использовать эти коды для строковых и числовых аргументов / значений, передаваемых в конструктор соответственно.

 console.log(new Date("6546").toLocaleDateString());
 console.log(new Date(6546).toLocaleDateString());
0 голосов
/ 05 июля 2018

Из названия я подозреваю, что значение, которое вы передаете new Date(), на самом деле является строкой, а не числом. Сначала преобразуйте его в число.

let d = new Date(Number(req.params.date_string));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...