如何从HTML5日期输入中解析日期?

duc*_*ain 13 javascript forms html5 date input

我在我的网页上有一个输入,我可以通过获取ISO字符串并拉出前10个字符来设置日期.

date = new Date();
dateInput.value = date.toISOString().substr(0,10);
Run Code Online (Sandbox Code Playgroud)

这非常有效.我的问题是,当我试图让日期退出时.我有一天假期.

var newDate = new Date(dateInput.value);
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下代码来弥补它,但它也不总是正确的

新日期(Date.parse(element.value)+ 86400000)

所以我的问题是:是否有一种优雅的方式可以始终如一地获得正确的日期.我一直在寻找一下,但似乎与Javascript中的日期解析没有很多一致性.

rob*_*rtc 21

如果它date是支持浏览器上的实际输入,那么它将具有valueAsDate属性.没有必要解析它.

  • 这很酷。我不知道该财产,但它给了我同样的问题。日期比我放在盒子里的日期晚了一天。我想知道是不是我浏览器的问题 我使用的是 Chrome 27.0.1453.94 m。我在 Internet Explorer 上尝试过,它不支持该属性(惊讶)。 (3认同)

Mar*_*ker 5

它将日期解释为UTC,对于大多数时区,它将使其看起来像"昨天".一种解决方案可能是将时区偏移量添加回日期以将其"转换"为您当地的时区.

  • 你是绝对正确的。我不再从事这个项目,但这是问题的正确答案。 (2认同)

wez*_*ten 5

var newDate = new Date(dateInput.value + 'T00:00');
Run Code Online (Sandbox Code Playgroud)

这将在任何时区给出正确的日期。