【问题标题】:Kendo MVC Datepicker timezone translationKendo MVC Datepicker 时区翻译
【发布时间】:2013-07-17 08:26:04
【问题描述】:

我们正在观察以下与我们的 MVC 应用程序和 Kendo DatePicker 之间的时间差异有关的问题。 Web 服务器以 UTC+0 运行。 Web 客户端运行在不同的时区(UTC+1、UTC+3、UTC-5 等)

该网页包含一个 Kendo 日期选择器(无时间部分),用户可以在其中选择一天或一个月。幕后使用包含时间和时区信息的完整 Date 对象在 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 asp.net-mvc-3 rest timezone kendo-ui


    【解决方案1】:

    问题是 JavaScript Date 和 C# DateTime 之间的转换完全被卡住了。我所做的是在将日期发布到服务器之前将其转换为字符串。您可以挂钩到 Kendo 数据源的 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。您不需要时区偏移量,是吗?

    在控制器的服务器端,您可以使用DateTime.Parse() 或让编译器隐式进行转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多