【问题标题】:Date format in Angularjs in ASP.Net MVC [duplicate]ASP.Net MVC中Angularjs中的日期格式[重复]
【发布时间】:2018-05-20 05:19:11
【问题描述】:

我有 ASP.NET MVC 项目,我试图在我的 cshtml UI 中格式化日期 (dd/MM/yyyy) 但它返回 null。

下面是我的cshtml代码:

    <tr ng-repeat="item in items">
                        <td>{{item.Id}}</td>
                        <td>{{item.Name}}</td>
                        <td>{{item.Manufacturer}}</td>
                        <td>{{item.BatchNo}}</td>
                        <td width="50px">{{item.ExpiryDate| date: 'dd/MM/yyyy'}}</td>
    </tr>

我尝试了两种方法:

1) .NET cshtml 本身的格式设置,但什么也没发生:

<td width="50px">{{item.ExpiryDate| date: 'dd/MM/yyyy'}}</td>

2) 我尝试使用过滤器,但它返回 null:

medApp.filter('cmdate', [
    '$filter', function ($filter) {
        return function (input) {
            return $filter('date')(new Date(input), 'dd/MM/yyyy');
        };
    }
]);

cshtml中的代码:

<td width="50px">{{item.ExpiryDate| cmdate: 'dd/MM/yyyy'}}</td>

关于这个问题的任何线索?

谢谢

【问题讨论】:

  • 显示item.ExpiryDate
  • ExpiryDate 是日期对象吗?
  • @SachilaRanawaka ...当我使用自定义过滤器时它为空。如果我使用 {{item.ExpiryDate| date:'dd/MM/yyyy'}} 然后它的 /Date(1513881000000)/ 我从 SQL Server 获取值并且它即将正常。
  • @Liam ...它是产品对象中的一个字段。
  • 来自您的 cmets,您有 this issue

标签: angularjs asp.net-mvc


【解决方案1】:

您的日期以 json 格式传递。像这样创建自定义过滤器。

app.filter("cmdate", function() {
    var re = /\/Date\(([0-9]*)\)\//;
    return function(x) {
        var m = x.match(re);
        if( m ) return new Date(parseInt(m[1]));
        else return null;
    };
});

现在这样称呼它

<td width="50px">{{item.ExpiryDate| cmdate | date: 'dd/MM/yyyy'}}</td>

【讨论】:

  • 最好在源头修复序列化,以便所有日期和时间都按照 ISO8601 进行序列化。处理起来容易得多。
  • 我试过用这个,但它是一样的。
猜你喜欢
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
相关资源
最近更新 更多