2015-10-15 3 views
-2

У меня есть приложение ASP.net, которое использует AngularJS для отображения данных. Я получаю список данных, содержащий столбец даты. Когда я использую console.log для печати данных, возвращаемых с сервера/базы данных, я вижу дату, напечатанную в формате «Thu Feb 11 2016 00:00:00 GMT + 1100 (AUS Eastern Daylight Time)». Почему сервер возвращает дату в этом формате? Как я могу изменить формат даты? Я хотел бы формат быть DD/MM/YYYY HH: MM Вот некоторые из моего кода, который извлекает данные:ASP.NET для AngularJS формат даты

public JsonResult GetEventList() 
{ 
var result = from e in db.events 
       select new 
       { 
           event_id = e.event_id, 
           event_name = e.event_name, 
           event_date = e.event_date 
       } 
return Json(result.ToList(), JsonRequestBehavior.AllowGet); 
} 

Json ответ выглядит так:

{ event_id: 1, event_name: 'Event', event_date: 'Mon Jan 11 2016 00:00:00 GMT+1100 (AUS Eastern Daylight Time)' } 
+0

Как вы возвращаете данные даты от ASP.NET к клиенту? – Dai

+0

«У меня есть ASP.NET, который« ... ASP.NET * what *? – Dai

+0

GetEventList() возвращает json. Можете ли вы показать ответ json в своем вопросе? –

ответ

1

На самом деле вы получаете:

Mon Jan 11 2016 00:00:00 GMT+1100 (AUS Eastern Daylight Time)

Вы можете попробовать добавить пользовательский формат для объекта Date, что-то вроде этого:

Date.prototype.formatMMDDYYYYHHMMSS = function() { 
    return (this.getDate()) + 
     "/" + ((this.getMonth() + 1) < 10 ? ("0" + (this.getMonth() + 1)) : (this.getMonth() + 1)) + 
     "/" + this.getFullYear() + 
     " " + this.getHours() + 
     ":" + this.getMinutes() + 
     ":" + this.getSeconds(); 
}; 

Как использовать эту функцию:

Установите переменную даты с длинной строкой даты.

var date = "Mon Jan 11 2016 00:00:00 GMT+1100 (AUS Eastern Daylight Time)"; 

Преобразование даты в Date().

date = new Date(date); 

Затем с помощью date.formatMMDDYYYYHHMMSS(), вы получите преобразованную дату.

Demo with Javascript

var date = "Mon Jan 11 2016 00:00:00 GMT+1100 (AUS Eastern Daylight Time)"; 
 

 
Date.prototype.formatMMDDYYYYHHMM = function() { 
 
    return (this.getDate()) + 
 
    "/" + ((this.getMonth() + 1) < 10 ? ("0" + (this.getMonth() + 1)) : (this.getMonth() + 1)) + 
 
    "/" + this.getFullYear() + 
 
    " " + this.getHours() + 
 
    ":" + this.getMinutes(); 
 
}; 
 

 
var datea = new Date(date); 
 
console.log(datea.formatMMDDYYYYHHMM());

Использование $ фильтра в AngularJS:

(function() { 
 
    "use strict"; 
 
    var app = angular.module("myApp", []); 
 

 
    app.controller("Controller", ["$scope", "$filter", 
 
    function($scope, $filter) { 
 

 
     $scope.eventList = [{ 
 
     "event_id": 1, 
 
     "event_name": "Event", 
 
     "event_date": "Mon Jan 11 2016 00:00:00 GMT+1100 (AUS Eastern Daylight Time)" 
 
     }, { 
 
     "event_id": 2, 
 
     "event_name": "Event 2", 
 
     "event_date": "Mon Jan 11 2016 15:48:00 GMT+1100 (AUS Eastern Daylight Time)" 
 
     }]; 
 

 
     // Using the toDateTime $filter in the Controller. 
 
     $scope.showDate = function(event) { 
 
     console.log($filter("toDateTime")(event.event_date)); 
 
     }; 
 
    } 
 
    ]); 
 

 
    app.filter("toDateTime", function() { 
 
    return function(x) { 
 

 
     Date.prototype.formatMMDDYYYYHHMM = function() { 
 
     return (this.getDate()) + 
 
      "/" + ((this.getMonth() + 1) < 10 ? ("0" + (this.getMonth() + 1)) : (this.getMonth() + 1)) + 
 
      "/" + this.getFullYear() + 
 
      " " + this.getHours() + 
 
      ":" + this.getMinutes(); 
 
     } 
 

 
     return new Date(x).formatMMDDYYYYHHMM(); 
 
    }; 
 
    }); 
 
})();
<html data-ng-app="myApp"> 
 

 
<head> 
 
    <title>Demo AngularJS</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
</head> 
 

 
<body data-ng-controller="Controller"> 
 
    <table> 
 
    <thead> 
 
     <tr> 
 
     <th> 
 
      event_id 
 
     </th> 
 
     <th> 
 
      event_name 
 
     </th> 
 
     <th> 
 
      event_date 
 
     </th> 
 
     <th> 
 
      Show Date 
 
     </th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr data-ng-repeat="event in eventList"> 
 
     <td>{{event.event_id}}</td> 
 
     <td>{{event.event_name}}</td> 
 
     <td>{{event.event_date | toDateTime}}</td> 
 
     <!-- Using the toDateTime $filter in the View. --> 
 
     <td> 
 
      <button data-ng-click="showDate(event)" type="button">Show Date</button> 
 
     </td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</body </html>

0

Если предположить, что время от ASP стороны находится в формате DateTime,

Получены с ASP на контроллере: "/ даты (1441164289937) /"

Для фильтрации (на стороне контроллера):

.filter('convertDateTime', function($filter) { 

    return function(input) { 

     var timeFormat = 'dd MMM yyyy HH:mm'; //date format 

     if(input == null) { return "";} 

     return $filter('date')(parseInt(input.substr(6)), timeFormat); 

    }; 

}) 

U может изменить следующий код javascript, приведенный выше, по адресу ur. Но логика такая же. Но вам нужно будет сначала изменить дату DateTime на дату javascript. Есть много примеров. Надеюсь, это поможет.

Смежные вопросы