Вычислить время a go / дней a go из javascript дат, которые нужно было преобразовать в строку - PullRequest
0 голосов
/ 05 августа 2020

Из-за ограничений со следующим js данные не могли быть переданы клиенту без преобразования в строку.

Таким образом, дата, полученная из базы данных, теперь является строкой:

 Past date as string is:   20200802016944990

Я использую new Date (), чтобы получить текущую дату и преобразовать ее в строку (в моей строковой дате отсутствует уведомление T)

Present date as string is: 20200805013945088

В обоих случаях я использую приведенный ниже код для преобразования в строку

.toISOString().replace(/[^0-9]/g, ""); 

Если бы это не были строки, это просто, как date1 - date 2.

Как получить go минут / часов / дней от прошлой даты и текущей даты, которые сейчас strings?

Я использую React js и Next js. Я не хочу устанавливать библиотеку типа moment js.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Другой подход - вместо этого преобразовать его в ISOstring, преобразовать его в миллисекунды с помощью getTime () (он возвращает число), а затем будет проще восстановить дату и получить нужную информацию (день, часы, минуты, эт c ..)

const dbDate = new Date().getTime();

console.log('getTime value =>', dbDate);

const parsedDate = new Date(dbDate);

console.log('parsed date =>', parsedDate);

console.log('Date =>', parsedDate .getDate());
console.log('Hours =>', parsedDate .getHours());
console.log('Minutes =>', parsedDate .getMinutes());

//Once you get the dates, you can do the date calculate, like:

//Get 1 day in milliseconds
var one_day=1000*60*60*24;

const date1 = new Date('9/9/2020').getTime(); //JUST AN EXAMPLE
const date2 = new Date('10/9/2020').getTime(); //JUST AN EXAMPLE

const diffTime = Math.abs(date2 - date1);

const diffDays = Math.ceil(diffTime / one_day); 

console.log(diffTime + " milliseconds");
console.log(diffDays + " days");
1 голос
/ 05 августа 2020

Хотя я бы посоветовал сохранить исходную дату - или неотредактированную строку ISO, вы можете проанализировать значение (поскольку это строка ISO, все данные сохраняются, и мы можем восстановить оригинал.

Этот маленький функция может преобразовывать строки обратно в Date s (примечание: здесь используются некоторые функции ES6, которые не являются строго необходимыми, но их можно избежать в обмен на более подробный код)

const s = "20200805013945088";


function parseDate(s) {
  let t = [s.substr(0, 4)];
  for(let i = 0; i < 5; i++){
    t.push(s.substr(4 + (2 * i), 2))
  }
  t.push(s.substr(14));
  t = t.map((s)=>parseInt(s));
  return new Date(...t);
}

console.log(parseDate(s));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...