从ASP.net到AngularJS的日期格式

ASP.net to AngularJS date format

本文关键字:日期 格式 AngularJS ASP net      更新时间:2023-09-26

我有一个使用AngularJS显示数据的ASP.net应用程序。我正在检索包含日期列的数据列表。当我使用console.log打印从服务器/数据库返回的数据时,我看到的日期以"2016年2月11日星期四00:00:00 GMT+1100(美国东部夏令时)"的格式打印。为什么服务器以这种格式返回日期?我怎样才能更改日期格式?我希望格式为DD/MM/YYYY HH:MM以下是我的一些检索数据的代码:

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)' }

实际上你得到的是:

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(),得到转换后的日期。

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>

假设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 Date。这样的例子有很多。