时刻转换日期到当地时间?

时间:2017-06-09 11:46:36

标签: javascript kendo-ui momentjs

我在页面上有一个Kendo UI MVC网格。在这个网格中有三个日期列。日期(无时间值)作为本地时间(不是UTC)存储在数据库中。这些列在网格中定义如下:

            columns.Bound(p => p.CloseoutDate).ClientTemplate("#= moment(CloseoutDate).format('MM/DD/YYYY') #").Width(120);
            columns.Bound(p => p.BeginDate).Title("Begin Date").ClientTemplate("#= moment(BeginDate).format('MM/DD/YYYY') #").Width(110);
            columns.Bound(p => p.EndDate).Title("End Date").ClientTemplate("#= moment(EndDate).format('MM/DD/YYYY') #").Width(110);

你可以看到我正在使用moment.js来进行日期格式化。但是,似乎这一刻假设这些日期是UTC日期并将它们转换为当地时间。显示网格时,日期显示如下: enter image description here

所有这些日期都过了一天。例如,第一行应为2010年1月15日,2010年1月1日,2010年1月15日。这是正常的时刻行为,可以改变吗?

此外,CloseoutDate,BeginDate和EndDate是实际的C#datetime值。在SQL Server数据库中,它们存储为日期。

2 个答案:

答案 0 :(得分:0)

这解决了这个问题:

            columns.Bound(p => p.CloseoutDate).ClientTemplate("#= moment.utc(CloseoutDate,'MM/DD/YYYY').format('MM/DD/YYYY') #").Width(120);
            columns.Bound(p => p.BeginDate).Title("Begin Date").ClientTemplate("#= moment.utc(BeginDate,'MM/DD/YYYY').format('MM/DD/YYYY') #").Width(120);
            columns.Bound(p => p.EndDate).Title("End Date").ClientTemplate("#= moment.utc(EndDate,'MM/DD/YYYY').format('MM/DD/YYYY') #").Width(120);

基本上使用矩库和UTC构造函数。

答案 1 :(得分:-1)

你可以在列

中格式化日期
{ field: "beginDate", title: "Begin Date", format: "{0:yyyy-MM-ddTHH:mm:ss}",parseFormats: "{0:yyyy-MM-ddTHH:mm:ss}"}