有谁知道如何在网格中正确格式化DateTime? (这种数据类型是否支持?)。
无论我放入"过滤器"专栏的属性,我的日期似乎没有得到解析。
我看到显示的值: /日期(1480643052457)/
非常感谢任何帮助或建议!
----更新----
就像我最终做的快速更新一样:我只是创建了第二个字符串列并返回了一个格式化的日期字符串(我在检索时格式化)。然后当我排序时,我只是确保使用实际的DateTime列而不是显示列,以便它正确排序。这适用于我的需求。我想最初当我开始使用Angular 2网格时,我期待更多的客户端功能不在网格中(在排序方面等),但是一旦你正确绑定到一个网格,它并不是真的需要它后端api源。
答案 0 :(得分:6)
您可以将日期格式设置如下:
kendo-grid-column field="createdOn" format='{0:MM/dd/yyyy HH:mm:ss}
答案 1 :(得分:6)
我在模板列中使用日期管道解决了同样的问题。确保检查空值。
<kendo-grid-column title="Last Login" width="100">
<ng-template kendoGridCellTemplate let-dataItem>
<div *ngIf="dataItem.lastLoginDate!=null">{{ formatDate(dataItem.lastLoginDate) | date:"shortDate" }}</div>
</ng-template>
</kendo-grid-column>
component.ts中的函数拉出日期字符串的可用部分并将其转换为JS日期,以便日期管道可以使用它。
formatDate(myStringDate) {
return new Date(parseInt(myStringDate.substr(6)));
}
我使用了shortDate格式,但你可以在这里找到更多格式选项,包括时间格式: Angular 2 Date Pipe Formatters
答案 2 :(得分:3)
为了使网格正确格式化日期,您需要将其转换为JS日期。我通常在从ajax调用的回调中检索来自服务器的数据。这样的事情:
field="SomeField" format='{0:d}
&#13;
(这是伪代码,不要直接使用它)
这样您就可以将日期格式化为:
field="SomeField" format='{0:MM/dd/yyyy h:mm a}
&#13;
或
Where
[Revision Date] Between
DateAdd("d", IIf(Weekday(Date()) = 2, -3, -1), Date()) And
DateAdd("d", -1, Date())
希望有所帮助。
答案 3 :(得分:1)
使用EF Core格式的字符串,即。 YYYY-MM-DDTHH:MM:SS,我能够在服务中使用它将日期格式拼接到调用(在本例中为read)中,该调用准备用于网格消耗的API数据。工作发生的地方是extractData,我从这个主题Angular 2 Date deserialization中提取并为我的目的进行了改造。希望它可以拯救某人悲伤。
我应该补充一点,这是在一个服务的上下文中,该服务被构造为一个扩展的BehaviorSubject。这与Telerik的反应形式编辑模型有关:
private fetch(action: string = "", data?: ISomething[], guid?: string): Observable<ISomething[]> {
let options = new RequestOptions();
options.body = this.serializeModels(data);
return this.http
.get('api/controllername/controllerget', options)
.map(response => response.json()).catch(this.handleError);
}
public read() {
this.reset();
if (this.data.length) {
return super.next(this.data);
}
this.fetch()
.do(data => this.data = data)
.subscribe(data => {
this.extractData(data)
super.next(data);
});
}
private extractData(data?: any) {
data.forEach((d) => {
d.datefieldname = new Date(d.datefieldname);
});
return data;
}