Как извлечь мм/дд/гггг из формата даты ISO-8601 2014-12-29T22:04:56.000Z в JavaScript?

У меня есть эта информация: 2014-12-29T22:04:56.000Z

Я хотел бы получить часть 2014-12-29 в формате 29.12.2014.

Как я могу сделать это в javascript?

Спасибо!


person s.n    schedule 14.11.2016    source источник


Ответы (3)


Вы можете отформатировать дату таким образом, чтобы получить желаемое форматирование.

var date = new Date("2014-12-29T22:04:56.000Z");

function pad(number) {
  if (number < 10) {
    return '0' + number;
  }
  return number;
}

function formatDate() {
  return pad(date.getUTCMonth() + 1) +
    '/' + pad(date.getUTCDate()) + '/' + date.getUTCFullYear();
}
console.log(formatDate())

person Sreekanth    schedule 14.11.2016
comment
Идеальный! Благодарю вас! - person s.n; 14.11.2016
comment
Нет необходимости использовать Date, переформатирование строки намного эффективнее и менее проблематично. - person RobG; 14.11.2016
comment
@RobG, что вы имеете в виду под менее проблематичным здесь? Я открыт для обучения. - person Sreekanth; 14.11.2016
comment
Анализ строк даты с помощью конструктора Date (или Date.parse, они эквивалентны для разбора) в значительной степени зависит от реализации и действительно требует надлежащего анализатора (есть много хороших). Даже синтаксический анализ ISO 8601 имеет некоторые неожиданные особенности. Поэтому избегание этого (см. ответ Quagaar) делает жизнь намного проще. ;-) - person RobG; 15.11.2016
comment
О, я вижу. Спасибо за информацию. - person Sreekanth; 15.11.2016

Вы можете сделать это, используя замену RegExp:

var ds = '2014-12-29T22:04:56.000Z';
console.log(ds.replace(/^(\d{4})-(\d\d)-(\d\d).+$/, '$2/$3/$1'));

Другим подходом будет использование простого String.slice для получения необходимых частей из строки даты:

console.log(ds.slice(5, 7) + '/' + ds.slice(8, 10) + '/' + ds.slice(0, 4));
person Quagaar    schedule 14.11.2016

strMDY = strISO.substring(5, 7) + "/" + strISO.substring(8, 10) + "/" + strISO.substring(0, 4)

http://www.w3schools.com/jsref/jsref_substring.asp

person landru27    schedule 14.11.2016