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

如何使KendoDateTimePicker不受时区影响,接受任意选择的日期时间

解决KendoDateTimePicker夏令时自动跳转问题的可行方案

方案一:强制使用UTC时区统一管理

直接将DateTimePicker配置为UTC时区,前后端交互全程用UTC时间,UI展示时根据目标无夏令时时区的固定偏移转换显示:

@(Html.Kendo().DateTimePicker()
    .Name("dateTimePicker")
    .Timezone("UTC") // 强制Picker使用UTC时区
    .Format("yyyy-MM-dd HH:mm")
    .Value(DateTime.UtcNow)
)
  • 后端接收数据时,直接存储UTC时间;展示时根据目标地区的固定偏移(比如GMT+0300无夏令时)转换为对应时间,完全避开夏令时规则影响。

方案二:指定无夏令时的固定偏移时区

如果目标业务地区是全年固定偏移的时区(无夏令时切换),直接配置Picker使用该固定偏移的时区ID:

@(Html.Kendo().DateTimePicker()
    .Name("dateTimePicker")
    .Timezone("Etc/GMT-3") // 对应GMT+0300(注意Etc时区偏移符号反向)
    .Format("yyyy-MM-dd HH:mm")
)
  • 注意Etc时区命名规则:Etc/GMT+X对应GMT-X,Etc/GMT-X对应GMT+X,按需选择对应固定偏移的时区ID即可。

方案三:禁用自动时区转换,直接处理本地时间字符串

关闭Picker的时区自动转换逻辑,将输入作为纯时间字符串处理,后端直接解析为目标无夏令时时区的时间:

@(Html.Kendo().DateTimePicker()
    .Name("dateTimePicker")
    .Format("yyyy-MM-dd HH:mm")
    .ParseFormats(new string[] { "yyyy-MM-dd HH:mm" }) // 指定严格解析格式
    .Value(DateTime.Now) // 传入目标时区的本地时间,而非系统时区时间
)
  • 后端接收时,直接按目标时区的固定偏移解析字符串,比如使用DateTime.ParseExact并指定DateTimeStyles.AssumeLocal,同时手动设置目标偏移,避免系统夏令时干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:25:40