mau*_*mon 7 javascript rest timezone asp.net-mvc-3 kendo-ui
我们正在观察以下与MVC应用程序和Kendo DatePicker之间的时差有关的问题.Web服务器以UTC + 0运行.Web客户端在不同的时区运行(UTC + 1,UTC + 3,UTC-5等)
该网页包含一个Kendo日期选择器(没有时间部分),用户可以选择一天或一个月.幕后花絮使用包含时间和时区信息的完整日期对象在AJAX请求中发送日期.
我们只对日期部分感兴趣而不管客户端所在的时区.当用户选择日期/月份时,我们希望在本地服务器时间内接收C#DateTime对象.
例如:
用户为UTC + 1并选择'01/07/2013'实际的C#DateTime对象被实例化为'30/06/2013 23:00'我们期望得到'01/07/2013 00:00:00'
我们目前在Global.asax中使用以下设置:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandliig = Newtonsoft.Json.DateTimeZoneHandling.Local;
Run Code Online (Sandbox Code Playgroud)
您能否提一些建议?
问题是 JavaScript Date 和 C# DateTime 之间的转换完全陷入困境。我所做的就是在将日期发布到服务器之前将其转换为字符串。您可以连接 Kendo DataSource 的parameterMap函数来执行此操作。
使用该parameterMap功能:
var ds = new kendo.data.DataSource({
transport: {
parameterMap: function(data, type) {
if (type === 'create' || type === 'update') {
// this changes the date to 'dd/MM/YYYY' format
data.date = kendo.toString(data.date, 'd');
}
return data;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我还设置了 ,JsonFormatter.SerializerSettings.DateFormatString = "YYYY/dd/MM hh:mm:ss"因为 JavaScript 可以将其转换为 Date 对象,而不会出现错误或其他问题。我还建议将您更改DateTimeZoneHandling为UTC. 您不需要时区偏移,对吗?
在控制器的服务器端,您可以使用DateTime.Parse()或让编译器隐式进行转换。
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |