Угловой JS Заменить номер месяца с названием месяца

0

У меня есть объект строки времени даты в html. Формат строки даты даты: mm/dd/YYYY hh: mm: ss На основании номера месяца я пытаюсь получить имя месяца.

Я пробовал следить за вещами,

  1. Я не могу поставить.getMonth() как строку.
  2. <div ng-switch="item.applicationData.EventStartDateTime.split("/")[0]"> JavaScript не работает в выражении углового переключателя.
  3. Ниже не работает <span class="calendar_mon">{{item.applicationData.EventStartDateTime.split("/")[0]=="12"?"December"}}</span>
  4. Все, что я могу сделать, это написать некоторые js-операции в объекте.

Любая помощь?

  • 0
    Вы можете использовать getMonth качестве функции внутри вашей директивы ng-switch например, ng-switch="getMonth(item.applicationData.EventStartDateTime)" и тогда getMonth вернет строковое значение

2 ответа

0
Лучший ответ

Создайте функцию в контроллере, которая получает дату как параметр, найдите месяц и вернет имя месяца и используйте его в контроллере, например:

<span class="calendar_mon">
     {{someFunction(item.applicationData.EventStartDateTime)}}
</span>

то в вашем контроллере выполните описанную выше логику:

$scope.someFunction = function(stringDate) {
  var month = stringDate.split("/")[0];
  var returnMonth;

  switch(month) {
     case "01": returnMonth = "January"; break;
     case "02": returnMonth = "February"; break;
     case "03": returnMonth = "March"; break;
     case "04": returnMonth = "April"; break;
     case "05": returnMonth = "May"; break;
     case "06": returnMonth = "June"; break;
     case "07": returnMonth = "July"; break;
     case "08": returnMonth = "August"; break;
     case "09": returnMonth = "September"; break;
     case "10": returnMonth = "October"; break;
     case "11": returnMonth = "November"; break;
     case "12": returnMonth = "December"; break;
  }

   return returnMonth;
}

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

$scope.someFunction = function(stringDate) {
      var parsedDate = new Date(stringDate);
      var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

      return months[parsedDate.getMonth()];
);

или по-другому:

{{ someFunction(item.applicationData.EventStartDateTime) | date: "MMMM"}}

то функция в контроллере будет выглядеть так:

$scope.someFunction = function(dateString) {
     // you should add checks here if "dateString.split("/")[0]" returns anything
    return new Date(dateString.split("/")[0]);
}
  • 0
    Спасибо Арбер. Я использовал решение 2.
0

У вас может быть функция в контроллере, которая возвращает месяц.

$scope.getMonthString = function(dateString){
   return $filter('date')(new Date(dateString), 'MMMM');
};

Тогда ваш HTML будет

<span>
    {{getMonthString(item.applicationData.EventStartDateTime)}}
</span>
  • 0
    Vetrivelmurugan, не забудьте ввести $ filter, если вы используете эту опцию :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню