2015-10-15 78 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 *什么*? – 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); 

    }; 

}) 

你可以修改上面的以下javascript代码到你喜欢的地方。但是逻辑是一样的。但是你需要先将你的DateTime改为javascript日期。那里有很多例子。希望有所帮助。