как вернуть дату в формате dd-FullMonth-yyyy - PullRequest
0 голосов
/ 28 мая 2019

У меня есть поле даты в списке SharePoint как mm/dd/yyyy

Я хочу перечислить его как dd MonthName yyyy

Когда я использую приведенную ниже функцию, она возвращает дату с добавлением одного месяца, например, если дата поля 01.01.2009, она будет отображаться как 1 февраля 2019 года (вместо января она отображает февраль)

Я пытался вычесть 1 из индекса месяца, но это не сработало.

function formatDate(thedate) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];
  var diffrentformat = thedate.split(" ")[0];
  var divideddate = diffrentformat.split("-");
  var d = new Date(divideddate[0], divideddate[1], divideddate[2]);
  //var d = new Date(thedate.split[]);
  var day = d.getDate();
  var monthIndex = d.getMonth();
  var year = d.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

Я ожидаю, что результат будет dd MonthName yyyy, но я получаю dd nextMonthName yyyy

Ответы [ 4 ]

0 голосов
/ 29 мая 2019

Вы можете форматировать и возвращать, используя toLocaleDateString, как показано ниже,

  return  day + ' ' + d.toLocaleDateString('en-us', { month: 'long' }) + ' ' + year;

Нет необходимости указывать названия месяцев в списке.

0 голосов
/ 28 мая 2019

Месяцы начинаются с нуля (0 = январь).Это учитывается при построении последней строки, но не при построении объекта даты:

  new Date(
   /*year*/ divideddate [0] ,
   /*month*/ divideddate [1] - 1,
   /*day*/ divideddate[2]
  );
0 голосов
/ 28 мая 2019

Вы говорите, что ваш формат даты - мм / дд / гггг, но ваш код выглядит как гггг-мм-дд.

При создании даты вы не вычитаете 1 из календарного месяца:

var d = new Date(divideddate[0], divideddate[1], divideddate[2]);

должно быть:

var d = new Date(divideddate[0], divideddate[1] - 1, divideddate[2]);

Однако вам не нужно создавать Date, проще и меньше кода просто использовать значения в строке:

// Reformat mm/dd/yyyy to d mmmm yyyy
function formatDate(thedate) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];
  var b = thedate.split(/\D/);
  return +b[1] + ' ' + monthNames[b[0]-1] + ' ' + b[2];
}

console.log(formatDate('5/28/2019'))

Обратите внимание, что массив месяцев устанавливает январь в качестве индекса 0, февраль в качестве индекса 2 и т. Д., Поэтому можно либо вычесть 1 из номера месяца в строке, либо исключитьпервый элемент в массиве.Я сделал первое.

0 голосов
/ 28 мая 2019

В javascript месяцы начинаются с 0-11.

Так что вам нужно установить индекс в соответствии с этим.

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