用于替换从 Sharepoint 返回的 json 日期中的某些字符串字符的自定义过滤器

Custom filter to replace certain string characters in a json date returned from Sharepoint

我正在处理从 Angularjs 获取请求返回的 json 数据。此数据来自 Sharepoint 列表。

日期是 json 日期字符串,看起来像这样 /Date(350697600000)/

所以我正在使用 Angularjs,我需要以 "normal" 的方式或我希望的方式显示此日期。 json 数据是一个对象数组,因此我在无序列表中使用 ng-repeat 显示数据。我正在尝试制作一个自定义过滤器,它将用空字符串替换 /Date( 和 )/,也就是说我只想要数字。我需要这个对象数组中的每个 json 日期在我的页面上显示时进行转换。

到目前为止,这是我自定义过滤器中的内容:

app.filter('dateFilter', function() {
   return function(obj) {
      return obj.replace(/\/([^a-zA-Z])\/ /gi, "");
   }    
});

我的 html 代码如下所示:

<li class="adv_li adv_li_birthday" ng-repeat="b in birthdays">
   <div id="adv_birthday" ng-bind="b.Birthday | dateFilter | date:'d. MMMM yyyy'"></div>
   <div ng-bind="b.Employee.Name"></div>
</li>

因为每个人都可以猜到我的过滤器不起作用。我真的不知道如何使用 .replace() 或者即使使用自定义过滤器来解决这个问题是最好的主意。我需要一些帮助。希望我的问题不是含糊不清。

提前谢谢大家!

我有两个理论,我将同时解决它们。

首先,我认为你的过滤器应该 return 一个日期,另外,我认为正则表达式可以改进。

app.filter('dateFilter', function() {
   return function(obj) {
      return new Date(parseInt(obj.replace(/\D/g, '')));
   }    
});

我正在使用特定的 return 语句从相同类型的格式中获取日期,尽管它不在 angular 项目中。

我建议您查看 Moment.js 以了解日期时间解析和操作。这种时间格式称为 Unix Epoch,在 Moment 中你会写类似

的东西
var date = moment('Date(350697600000)')