You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KendoUI Scheduler时区问题:发送至服务器时时间偏移两小时

KendoUI Scheduler 时区偏移问题解决方案
  • 确认全链路时区配置一致
    除了在Scheduler组件上设置timezone: "Europe/Rome",还要给DataSource的日期字段明确指定时区,避免字段解析时出现偏差:

    schema: {
      model: {
        fields: {
          start: { type: "date", timezone: "Europe/Rome" },
          end: { type: "date", timezone: "Europe/Rome" }
        }
      }
    }
    
  • 手动控制日期序列化逻辑
    Kendo默认会将日期转为UTC后发送,导致服务器解析时出现偏移。可以重写DataSource的请求数据处理函数,把日期转为Europe/Rome时区的本地时间再提交:

    transport: {
      create: {
        url: "/your-api-endpoint",
        type: "POST",
        data: function(data) {
          const romeTz = kendo.timezone.getTimezone("Europe/Rome");
          data.start = romeTz.toLocalDate(new Date(data.start));
          data.end = romeTz.toLocalDate(new Date(data.end));
          return data;
        }
      },
      update: {
        url: "/your-api-endpoint/{id}",
        type: "PUT",
        data: function(data) {
          const romeTz = kendo.timezone.getTimezone("Europe/Rome");
          data.start = romeTz.toLocalDate(new Date(data.start));
          data.end = romeTz.toLocalDate(new Date(data.end));
          return data;
        }
      }
    }
    
  • 关闭UTC自动转换开关
    检查Scheduler和DataSource的utc配置,若设置为true会强制日期转UTC发送,需将其改为false:

    $("#scheduler").kendoScheduler({
      timezone: "Europe/Rome",
      utc: false,
      // 其他配置项
    });
    
  • 服务器端强制时区解析
    服务器端统一使用Europe/Rome时区解析日期,不受系统文化设置影响。以.NET为例,可全局配置:

    services.AddControllers()
      .AddJsonOptions(options =>
      {
        options.JsonSerializerOptions.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
      });
    

内容的提问来源于stack exchange,提问作者pinale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 03:42:11