Неправильная обработка даты в Javascript - PullRequest
1 голос
/ 21 января 2020

Я использую метку времени, которая вставлена ​​в мою базу данных Postre SQL и пытаюсь проанализировать ее, чтобы сделать ее удобной для пользователя, однако у меня неправильный год?

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
let timestamp = toTimestamp('Sun Jan 19 2020 21:19:40 GMT+0000 (Coordinated Universal Time)');

var d = new Date();
d.setTime(timestamp);

console.log(d.toGMTString()); //Mon, 19 Jan 1970 06:44:28 GMT

Я ожидаю результат Sun, 19 Jan 2020 21:19:40 GMT

Ответы [ 3 ]

2 голосов
/ 21 января 2020

Не делите данные на 1000

см. Здесь

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum;
}
let timestamp = toTimestamp('Sun Jan 19 2020 21:19:40 GMT+0000 (Coordinated Universal Time)');

var d = new Date();
d.setTime(timestamp);

console.log(d.toGMTString()); // Sun, 19 Jan 2020 21:19:40 GMT
1 голос
/ 21 января 2020

Это просто ошибка измерения. Дата ожидает эпоху в миллисекундах, но вы делите базовую переменную на 1000, превращая ее в секунды. Это приводит к расхождению и может быть исправлено путем удаления деления на 1000.

toTimestamp затем становится:

function toTimestamp(strDate){
   return Date.parse(strDate);
}
0 голосов
/ 21 января 2020

используйте только datum вместо datum/1000, кроме этого ваш код работает нормально

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum;
   //return Date.parse(strDate);
}
let timestamp = toTimestamp('Sun Jan 19 2020 21:19:40 GMT+0000 (Coordinated Universal Time)');

var d = new Date();
d.setTime(timestamp);

console.log(d.toGMTString()); //Mon, 19 Jan 1970 06:44:28 GMT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...