gpt4 book ai didi

javascript - HTML 输入类型 datetime-local 设置错误的时区

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:39 28 4
gpt4 key购买 nike

我创建了一个应用程序,它接受 HTML 输入并通过 JavaScript 在 native 日历事件上创建事件。它需要时间从 <input type="datetime-local"> ,并且它输入了不同的时间,因为它选择了不同的时区。如果我输入下午 1 点作为时间,它将返回上午 8 点。

<input type="datetime-local" id="startDate" name="startDate">

和 JavaScript:

var startDate = new Date($("#startDate").val());

任何帮助都会很棒。如果需要,我可以发布更多代码。

最佳答案

HTML5 datetime-local 输入类型将返回一个string 值,其中包含 ISO8601 格式的日期和时间,精度为分钟,没有任何时间区域偏移。

例如:2014-07-12T01:00

JavaScript 日期对象在从字符串解析日期时是出了名的不一致。在大多数实现中,当您提供这样的字符串时,它会错误地假定该值采用 UTC 格式。因此,您返回的 Date 对象将根据您本地计算机的时区偏移量进行调整。

有两种方法可以解决这个问题:

选项 1

将字符串处理为可能被 Date 对象的解析器解释为本地时间的格式。具体来说,将破折号 (-) 替换为正斜杠 (/),并将 T 替换为空格。

var s = $("#startDate").val();
var startDate = new Date(s.replace(/-/g,'/').replace('T',' '));

选项 2

使用具有更强大的日期解析能力的库。有几个可用。最受欢迎的之一是 moment.js .

Moment.js 有很多选项,但碰巧默认行为正是您所需要的。因此,您可以不带任何参数地将字符串传递给 moment 构造函数。

var s = $("#startDate").val();
var startDate = moment(s).toDate();

关于javascript - HTML 输入类型 datetime-local 设置错误的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24703698/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com