【问题标题】:Convert C# DateTime To Angular Date将 C# DateTime 转换为角度日期
【发布时间】:2015-07-09 13:46:26
【问题描述】:

我有一个 Angular 集合绑定到从 MVC JsonResult 填充的转发器。

    $scope.loadData = function () {
        $http.get('/Product/GetDiscountCodes')
          .then(function (result) {
              console.log(result);
              $scope.discountCodes = result.data.DiscountCodes;
              $scope.selected = {};
          });
    };

转发器中的一个字段填充了日期。从服务器返回的日期是 C# DateTime,如下所示:

2015 年 1 月 5 日上午 12:02:00

但是,当它被 Angular 绑定时,显示如下:

/日期(1420434120000)/

如何让日期以 mm/dd/yyyy 格式正确显示在我的文本字段中?

我尝试了 ui-utils 日期格式,但不起作用。

我还尝试创建自己的指令来正确格式化日期,但是当保存事件发生时,发送到服务器端方法的日期全部被顶起。

       function inputDate() {
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelController) {
            ngModelController.$parsers.push(function (data) {
                if (data === null) { return null; }
                var d = moment(data).format('YYYY-MM-DD');
                return d;
            });

            ngModelController.$formatters.push(function (data) {
                if (data === null) { return null; }
                return moment(data).format('MM/DD/YYYY');
            });
        }
    }
}
   angular.module('discountApp')
    .directive('inputDate', inputDate);

感谢您的帮助!

【问题讨论】:

  • 这有点像微软用来获取日期的技巧。我认为他们这样做是为了解决烦人的 UTC 偏移量。但无论如何,只需在您的服务调用中评估 Date() 函数。如果您不想评估它,您可以使用提取时间戳并使用 momentjs。重点是在将数据返回给任何其他服务或控制器之前在服务中塑造该数据。
  • 我在这些情况下使用过滤器。这个 answer 使用 moment.js 过滤器。我的用法如下:<span>{{myDate | jsonDate: "MM-dd-yyyy"}}</span>

标签: c# angularjs date datetime


【解决方案1】:

使用 {sampledate.slice(6, -2) |日期:'dd/MM/yyyy'}

【讨论】:

  • 这应该是最好的答案
【解决方案2】:
var app = angular.module('app',[]);
app.filter('ctime', function(){

  return function(jsonDate){

    var date = new Date(parseInt(jsonDate.substr(6)));
    return date;
  };

});
app.controller('fCtrl', function($scope){

  $scope.date = '/Date(1420875802707)/';

});

【讨论】:

  • 我们如何使用这个过滤器?使用 |时间?它对我不起作用。能详细点吗?
【解决方案3】:

这似乎是您在 .Net 中使用的序列化库的问题。看看 Scott Hanselman 的这篇博文

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

它谈到了这个问题。日期应序列化为ISO 8601 格式。

您可能需要更改序列化程序,请参阅此处Setting the Default JSON Serializer in ASP.NET MVC

【讨论】:

    【解决方案4】:

    使用代码脚本: $filter('date')($scope.Your_DateTime_Model, 'MM/dd/yyyy')

    使用代码视图:<input class="form-control" type="text" data-ng-model="Your_DateTime_Model | date:'MM/dd/yyyy'" />

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2018-02-05
      • 1970-01-01
      • 2015-05-29
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多