日期计时器选择器 - 时区偏移抑制

问题描述 投票:0回答:1

我在使用 Kendo 表单中的 Kendo UI 日期(时间)选择器时遇到了一些大问题。 (在 Kendo Grid Popup 中,日期(时间)选择器的行为不同,并且不添加时区偏移)

问题是,客户端总是添加本地时区偏移量,这导致数据库中的日期“不正确”。

例如,我将日期设置为 2000/1/1,在数据库中我将得到 utc 日期 1999/12/31T22:00:00,偏移量为两小时

客户端它显示了正确的日期,但由于显而易见的原因,sql 等中的以下流程不再起作用(例如发票日期)

user-interface kendo-ui datetimepicker timezone-offset
1个回答
0
投票

问题本身有时只会出现,而且我发现解决它相当容易。

绑定到视图的模型允许 ISO 日期“yyyy-MM-dd...”和 js 日期 如果模型从数据库加载数据,它会填充 iso 日期,如果您使用日期选择器设置模型值,它会设置 js 日期

如果您捕获 json 日期并将其作为 iso 日期写入更改事件(日期选择器/表单)中的模型,它将不会执行任何时区偏移(因为没有)

我使用了 luxon,因为它比 js date 更直观,但你只需要将本地时区偏移量与 utc 进行比较,然后将其转换为 iso 日期字符串

function dtp_suppressOffset(jsdateTime) {
    return luxon.DateTime.fromJSDate(jsdateTime).toISODate({ includeOffset: false })
}

花了我一些时间,这真的让我很生气,而且我没有找到好的解决方案,所以这是我的解决方法,供需要的人使用

© www.soinside.com 2019 - 2024. All rights reserved.