gpt4 book ai didi

javascript - angularJS 过滤日期

转载 作者:行者123 更新时间:2023-11-28 19:27:40 25 4
gpt4 key购买 nike

我正在尝试使用过滤器来过滤掉字符串日期。我从 API 获取的日期是

"/Date(1418716652000+0000)/"

我有一个函数可以将日期转换为我想要的类型:

1418716652000

功能是:

$scope.convertDate = function(published_first) {
var date = (published_first.match(/\(.*\)/, ''));
var convertedDate = date[0];
date = eval(convertedDate.replace(/\//g,''));
return date;
}

我的 HTML 是:

<div id ="news" ng-repeat="new in news | filter:convertDate">
<h3 class="title" ng-repeat="n in new">
<span>{{n.title}}</span><br/>
<div class="title-data">
<span ng-if="n.byline.length > 0">by: {{n.byline}}</span>
<br/>
<span>
<span>published: {{n.published_first | date:'medium'}}</span><br/>
</span>
</div>

我一直在尝试将其作为 ng-repeat div 中的 HTML 中的过滤器运行,但它不起作用。我还尝试在同一范围内运行过滤器,其中包括 Angular 日期:“中”过滤器。那也行不通。有人可以帮助我解决我所缺少的事情吗?

最佳答案

看来您正在使用的 API 向您提供了带有 published_first 属性的新闻对象,其传输格式是您希望以不同方式呈现的,但该数据在运行时不会更改已收到。

在任何类型的 watch 中将标记中的转换作为过滤器或函数意味着您要不断地转换每个触发摘要的事件的日期。最好从接收新闻项的 Controller 或服务运行 ConvertDate() 函数,并在从 API 接收到每个项时对每个项进行转换。在这种情况下,每个新闻项从字符串到日期的转换仅完成一次,然后您的标记将变为:

<span>published: {{n.published_first | date:'medium'}}</span>

此外,如果您可以确保来自 API 的格式始终保持一致(应该如此),您可以使用一行代码将其转换为时间戳:

$scope.convertDate = function(published_first) {
return parseInt(published_first.substr(6), 10);
}

该行删除 /Date( 的初始非数字字符,并解析到第一个非数字字符,即 +) 取决于精度。

关于javascript - angularJS 过滤日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com