Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入类型的日期=";日期“;“到新日期”是不正确的日期输出_Javascript_Html - Fatal编程技术网

Javascript 输入类型的日期=";日期“;“到新日期”是不正确的日期输出

Javascript 输入类型的日期=";日期“;“到新日期”是不正确的日期输出,javascript,html,Javascript,Html,我有一个input=“date”,我正试图分别提取其中的日期、月份和年份,它似乎被关闭了一天左右。例如,如果我输入1900年1月1日,它似乎是从1899年11月31日吐出来的。我举了一个基本的例子- 函数clickDate(){ const dateinput=document.querySelector(“.date”).value; const dateObj=新日期(dateinput); log(“pull date”,dateObj.getFullYear(),dateObj.get

我有一个
input=“date”
,我正试图分别提取其中的日期、月份和年份,它似乎被关闭了一天左右。例如,如果我输入1900年1月1日,它似乎是从1899年11月31日吐出来的。我举了一个基本的例子-

函数clickDate(){
const dateinput=document.querySelector(“.date”).value;
const dateObj=新日期(dateinput);
log(“pull date”,dateObj.getFullYear(),dateObj.getMonth(),dateObj.getDate());
};


格式
您的问题在于UTC与本地时区偏移

使用内置解析器,格式为YYYY-MM-DD的字符串将被解释为UTC,而其他字符串将被解释为本地字符串

不鼓励使用内置解析器:

注意:由于浏览器差异和不一致,强烈建议使用日期构造函数(和date.parse(),其工作方式相同)解析日期字符串。仅按惯例支持RFC 2822格式字符串。对ISO 8601格式的支持不同之处在于,仅日期字符串(例如“1970-01-01”)被视为UTC,而不是本地字符串。()

另一方面,
getFullYear
getMonth
getDate
等返回本地值

下面是一个演示:

const dateInput='2019-02-05'
const dateObj=新日期(dateInput);//解析为UTC
console.log(“pull date”,dateObj.getUTCFullYear(),dateObj.getUTCMonth(),dateObj.getUTCDate());//UTC

log(“pull date”,dateObj.getFullYear(),dateObj.getMonth(),dateObj.getDate());//本地
这可能有帮助吗?就我个人而言,我只需将
.value
更改为
.valueAsDate
,然后从那里开始。听起来你好像有一个时区问题。请了解清楚的解释和示例,这非常有用。
新建日期(…dateInput.split('-'))
返回错误的月份,因为月份是零索引的。在字符串中,“02”是二月
dateObj.getUTCMonth()
返回2,也就是3月份。很好的捕获,减去1应该可以解决这个问题。