如何使用javascript从日期输入中获取日期
您好,我有一个javascript函数,它从两个日期输入中获取两个日期,比较它们并返回一个布尔值,除非它不起作用如何使用javascript从日期输入中获取日期,javascript,html,date,Javascript,Html,Date,您好,我有一个javascript函数,它从两个日期输入中获取两个日期,比较它们并返回一个布尔值,除非它不起作用 函数检查日期(){ var datefrom=新日期(); var dateto=新日期(); datefrom=getElementById(“date_from”).innerHTML; dateto=getElementById(“date_to”).innerHTML; 如果(datefrom>dateto){ 警报(“Dateto必须大于datefrom”); 返回fal
函数检查日期(){
var datefrom=新日期();
var dateto=新日期();
datefrom=getElementById(“date_from”).innerHTML;
dateto=getElementById(“date_to”).innerHTML;
如果(datefrom>dateto){
警报(“Dateto必须大于datefrom”);
返回false;
}否则返回true;
}
日期
代布
日期
鳍
添加
不能将getElementById
用作方法。您必须在文档中调用它:
datefrom= document.getElementById("date_from").innerHTML;
dateto= document.getElementById("date_to").innerHTML;
不能将getElementById
用作方法。您必须在文档中调用它:
datefrom= document.getElementById("date_from").innerHTML;
dateto= document.getElementById("date_to").innerHTML;
两个问题:
您正在全局调用getElementById
,但应该在文档
对象上调用它
您正在使用.innerHtml
而不是.value
另外,您也不需要创建new Date()
对象来丢弃它们。只需立即设置所需的值:
var datefrom = document.getElementById("date_from").value;
var dateto = document.getElementById("date_to").value;
注意:这些值是字符串,不是日期。根据:
显示的日期格式将不同于实际值-显示的日期根据用户浏览器的区域设置进行格式设置,但解析后的值始终采用yyyy-mm-dd格式
因此,出于比较目的,这应该仍然有效,因为yyyy-mm-dd
是一个递增值。但是如果您需要一个Date
对象,那么MDN还说有一个.valueAsDate
属性(尽管该页面上没有示例),以及一个.valueAsNumber
,它返回一个UNIX时间戳,该时间戳对于创建日期应该是可靠的
否则,JavaScript中的日期可能会很棘手,而像exist这样的库可以让这变得更容易。有两个问题:
您正在全局调用getElementById
,但应该在文档
对象上调用它
您正在使用.innerHtml
而不是.value
另外,您也不需要创建new Date()
对象来丢弃它们。只需立即设置所需的值:
var datefrom = document.getElementById("date_from").value;
var dateto = document.getElementById("date_to").value;
注意:这些值是字符串,不是日期。根据:
显示的日期格式将不同于实际值-显示的日期根据用户浏览器的区域设置进行格式设置,但解析后的值始终采用yyyy-mm-dd格式
因此,出于比较目的,这应该仍然有效,因为yyyy-mm-dd
是一个递增值。但是如果您需要一个Date
对象,那么MDN还说有一个.valueAsDate
属性(尽管该页面上没有示例),以及一个.valueAsNumber
,它返回一个UNIX时间戳,该时间戳对于创建日期应该是可靠的
否则,JavaScript中的日期可能会很棘手,而像exist这样的库可以让这变得更容易。您应该使用.value
属性,而不是.innerHTML
来访问输入元素的值。解决了.value问题后,您是在比较字符串,而不是日期。@epascarello“2020-06-01”>“2020-05-30”
效果很好,但是当然,将值解析为正确的日期对象可能会有一些好处。@pawel,如果日期格式不是MM-DD-YYYY或DD-MM-YYYY?@epascarello,那么您正在处理的是日期输入的不兼容浏览器实现:)返回的值的格式由规范定义,并且不必与显示的日期匹配最有可能是特定于区域设置的。您应该使用.value
属性,而不是.innerHTML
来访问输入元素的值。解决了.value问题后,您是在比较字符串,而不是日期。@epascarello“2020-06-01”>“2020-05-30”
效果很好,但肯定,将值解析为正确的日期对象可能会有一些好处。@pawel,如果日期格式不是MM-DD-YYYY或DD-MM-YYYY?@epascarello,那么您正在处理的是日期输入的不兼容浏览器实现:)返回的值的格式由规范定义,并且不必与显示的日期匹配最有可能是特定于区域设置的。问题多于此问题多于此比较字符串,而非日期值date将日期解析为UTC,而非本地。比较字符串,而非日期值date将日期解析为UTC,而非本地。