2017-06-09 30 views
0

我在页面上有一个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

所有这些日期都将关闭一天。例如,第一行应该是1/15/2010,1/1/2010,1/15/2010。这是正常的时刻行为,可以改变吗?

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

+0

也许尝试将'format'移动到'moment(DateField)'例如'时刻(CloseoutDate,'MM/DD/YYYY')'。来自[此问题](https://stackoverflow.com/a/372​​78220/6224482)。 – Sandman

+0

'CloseoutDate','BeginDate'和'EndDate'的值是多少?这些值是否是字符串?在这种情况下,你可以使用['moment(String,String)'](http://momentjs.com/docs/#/parsing/string-format/)。 – VincenzoC

+0

@VincenzoC - CloseoutDate,BeginDate和EndDate是实际的C#日期时间值。在数据库中,它们存储为日期。 –

回答

-1

U可以在列

{ field: "beginDate", title: "Begin Date", format: "{0:yyyy-MM-ddTHH:mm:ss}",parseFormats: "{0:yyyy-MM-ddTHH:mm:ss}"} 
+0

1)在这些日期我没有时间组件。 2)这将如何防止日期转换为当地时间? 3)我如何将它传递给原始文章中显示的当前陈述? –

+0

客户端的回应是什么? – DraganB

+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构造。