javascript - Kendo MVC Datepicker 时区翻译

标签 javascript asp.net-mvc-3 rest timezone 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;

能请教一下吗?

最佳答案

问题是 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/

相关文章:

javascript - 我不知道如何让我的 iFrame 在点击时下拉

asp.net-mvc - 发布表单数据后如何使用 ModelState 清除表单,我的 View 模型是一个具有两个模型的 View 模型?

java - RESTful API 客户端最佳实践

java - 如何使用 spring boot 压缩下载的文件

java - 如何向 Spring MVC Controller 方法添加自定义安全注释

javascript - 如何修复 CSS div 未正确对齐

javascript - 调整文本区域大小以适合所有内容

javascript - 添加到输入和克隆结果

asp.net-mvc-3 - 添加可部署依赖项 - 缺少 MVC 复选框

c# - 区域特定登录页面