多次应用日期筛选器
Apply date filter multiple times
在我的角度应用程序中,我调用了一个WCF REST服务,该服务返回一个数组ob对象,其中一个属性是DateTime类型,它以这种形式在JSON中序列化
[{"date":"'/Date(1295164800000-0800)'/",...
为了在我的模板中很好地显示它,我创建了一个过滤器来将该 JSON 表示转换为 JavaScript Date 对象。
eventsApp.filter("fromMSDate", function(){
return function (jsonDate) {
var D, dtime, T, tz, off,
dobj = jsonDate.match(/('d+)|([+-])|('d{4})/g);
T = parseInt(dobj[0]);
tz = dobj[1];
off = dobj[2];
if (off) {
off = (parseInt(off.substring(0, 2), 10) * 3600000) +
(parseInt(off.substring(2), 10) * 60000);
if (tz == '-') off *= -1;
}
else off = 0;
return new Date(T + off).toUTCString();
}
});
我以这种方式使用它
<span class="span1">Date:</span>
<span>{{event.date | fromMSDate}}</span>
一切都根据需要工作,我确实在页面中显示了一个 JS Date 对象,但我不喜欢这种格式,所以我尝试应用 'date'
过滤器但没有成功。
<span class="span1">Date:</span>
<span>{{event.date | fromMSDate | date:'medium'}}</span>
由于某种原因,date
过滤器被忽略,日期显示为Fri, 15 Mar 2013 00:00:00 GMT
。
我在这里做错了什么?
感谢
Date.prototype.toUTCString
以 Angular 的日期过滤器无法识别的格式("星期一, 03 Jul 2006 21:44:38 GMT") 返回日期。
从日期筛选器文档:
[参数
date
:] 日期格式为 Date 对象,毫秒 (字符串或数字)或各种 ISO 8601 日期时间字符串格式(例如 yyyy-MM-ddTHH:mm:ss.SSSZ及其较短的版本,如 yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ).如果没有时区 在字符串输入中指定,时间被视为在 本地时区。
因此,要生成日期过滤器可以理解的格式,请使用Date.prototype.toISOString
在日期过滤器兼容格式中生成日期("2013-10-31T08:36:14.601Z")。
app.controller('AppCtrl', function($scope){
$scope.jsonDate = "'/Date(1295164800000-0800)'/";
});
app.filter("fromMSDate", function(){
return function (jsonDate) {
var D, dtime, T, tz, off,
dobj = jsonDate.match(/('d+)|([+-])|('d{4})/g);
T = parseInt(dobj[0]);
tz = dobj[1];
off = dobj[2];
if (off) {
off = (parseInt(off.substring(0, 2), 10) * 3600000) +
(parseInt(off.substring(2), 10) * 60000);
if (tz == '-') off *= -1;
}
else off = 0;
return new Date(T + off).toISOString();
}
});
<div ng-controller="AppCtrl">
<div>date json: {{jsonDate}}</div> <!-- == /Date(1295164800000-0800)/ -->
<div>date fromMSDate: {{jsonDate | fromMSDate}}</div> <!-- == 2011-01-16T00:00:00.000Z -->
<div>date medium: {{jsonDate | fromMSDate | date:'medium'}}</div> <!-- == Jan 16, 2011 1:00:00 AM -->
<div>date short: {{jsonDate | fromMSDate | date:'short'}}</div> <!-- == 1/16/11 1:00 AM -->
</div>
- 按日期排序和筛选
- 拉力赛应用程序 SDK 2.0:无法按日期筛选
- 开始日期和结束日期输入字段的 JQuery 筛选器表
- 如何使用 OData 查询选项按日期进行筛选
- 我们可以将控制器中的JSON数据(MM/DD/YYYY格式)与今天的's日期,并在数组中显示筛选列表
- 范围中匹配日期值的自定义ng筛选器
- 使用new date()将数据与当前日期的MM/DD/YYYY格式的日期进行比较和筛选,同时从用户输入值中减去new d
- Videogular-hh:mm:ss格式的日期筛选器不起作用
- mongoDB动态查询中的日期筛选器
- 多次应用日期筛选器
- 用于筛选日期范围之间的数据的沙发基视图
- 将“剑道网格”列显示为“日期时间”,但在筛选时忽略“时间”
- NG 重复日期范围筛选器
- 使用日期将所有下拉列表筛选为下拉列表
- 使用日期将下拉列表筛选为下拉列表
- 如何在javascript中筛选日期以仅获取最近4个月的日期
- 从数组中筛选日期
- 如何在数据表中筛选日期
- 如何在DataTables中筛选日期范围
- 使用Isotop筛选日期