我们正在观察以下与我们的 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;
能请教一下吗?
最佳答案
问题是 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;
}
}
});
我还设置了 JsonFormatter.SerializerSettings.DateFormatString = "YYYY/dd/MM hh:mm:ss"
因为 JavaScript 可以将其转换为 Date 对象而不会出现错误或其他问题。我还建议将 DateTimeZoneHandling
更改为 UTC
。您不需要时区偏移量,对吗?
在 Controller 的服务器端,您可以使用 DateTime.Parse()
或让编译器隐式进行转换。
关于javascript - Kendo MVC Datepicker 时区翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694759/