我的网页上有一个输入,我可以通过获取ISO字符串并拉出前10个字符来设置日期。
date = new Date();
dateInput.value = date.toISOString().substr(0,10);
这完美无缺。我的问题是,当我试图让日期退出时。我有一天假期。
var newDate = new Date(dateInput.value);
我也尝试过以下代码来弥补它,但它并不总是正确的
新日期(Date.parse(element.value)+ 86400000)
所以我的问题是:是否有一种优雅的方式可以始终如一地获得正确的日期。我一直在寻找一下,但似乎与Javascript中的日期解析没有很多一致性。
答案 0 :(得分:21)
如果它是支持浏览器上的实际date
输入,那么它将具有valueAsDate
property。没有必要解析它。
答案 1 :(得分:5)
它将日期解释为UTC,对于大多数时区,它将使其看起来像“昨天”。一种解决方案可能是将时区偏移量添加回日期以将其“转换”为您当地的时区。
答案 2 :(得分:3)
var newDate = new Date(dateInput.value + 'T00:00');
这将在任何时区提供正确的日期。
答案 3 :(得分:0)
var today = document.getElementById("myInputDate").valueAsDate;
var tomorrow = new Date(today.valueOf() + 86400000 + (today.getTimezoneOffset() * 60000));
86400000 =一天的毫秒数
today.getTimezoneOffset() * 60000 = timezoneOffset
毫秒
答案 4 :(得分:0)
您还可以将输入字符串从YYYY-MM-DD转换为MM / DD / YYYY,然后解析日期以获得正确答案。
示例:
new Date(Date.parse('2018-09-28'))
= 2018年9月27日星期四GMT-0500(中央夏令时)
new Date(Date.parse('09/28/2018'))
= 2018年9月28日星期五00:00:00 GMT-0500(中央夏令时)
(注意:我在CDT中)
答案 5 :(得分:0)
尝试使用.toLocaleString
将日期输入到输入中,并在解析时添加时间,例如:
date = new Date();
dateInput.value = date.toLocaleString("sv-SE", {
hour: "2-digit",
minute: "2-digit",
second: "2-digit"
});
并将该值添加到Date对象中,请使用:
new Date(inputdateInput.value + "T00:00");
我写了一篇有关在Date对象和日期输入here之间进行转换的小文章