Конвертировать дату из строки в дату Javascript - PullRequest
0 голосов
/ 18 декабря 2018

Я попробовал следующий код

var parts ='2014-04-03'.split('-');
    // Please pay attention to the month (parts[1]); JavaScript counts months from 0:
    // January - 0, February - 1, etc.
    var mydate = new Date(+parts[0], +parts[1] - 1, +parts[2]); 
    console.log(mydate);

Однако результат будет

2014-04-02T17: 00: 00: 000Z

Интересно, почему результат не2014-04-03

Спасибо

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Вы можете использовать одну функцию Javascript для преобразования даты в требуемый формат 'yyyy-MM-dd'.Ниже приведен фрагмент кода.

function DateToStr(date, format) {
  let z = {
    y: date.getFullYear(),
    M: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    m: date.getMinutes(),
    s: date.getSeconds()
  };
  return format.replace(/(y+|M+|d+|h+|m+|s+)/g, v => ('0' + z[v.slice(-1)]).slice(-v.length));
}

var parts = '2014-04-03'.split('-');
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
var a = DateToStr(mydate, 'yyyy-MM-dd')

console.log(a);
0 голосов
/ 18 декабря 2018

Используйте Date.UTC , поскольку он обрабатывает даты в формате UTC, исключая местный часовой пояс и летнее время.

var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(Date.UTC(+parts[0], +parts[1] - 1, +parts[2])); 
console.log(mydate);
0 голосов
/ 18 декабря 2018

Осторожно, JavaScript может проникнуть в местный часовой пояс как при создании даты, так и при ее сериализации.Показанный код new Date(int,int,int) создает объект даты, представляющий локальную полночь для указанного года / месяца / дня.

ГГГГ-ММ-ДД могут быть проанализированы в точности так, как они есть.Просто сделай new Date('2014-04-03').Это дает вам объект полуночи UTC , который является именно тем, что вы хотите.

Тогда вам нужно быть немного осторожнее с методами, используемыми при форматировании (сериализации), более подробную информацию можно найти по ссылкевыше.

var myDate = new Date('2014-04-03')
console.log(myDate.toLocaleDateString("fr",{timezone:"UTC"}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...