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_Date - Fatal编程技术网

如何使用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

您好,我有一个javascript函数,它从两个日期输入中获取两个日期,比较它们并返回一个布尔值,除非它不起作用

函数检查日期(){
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,而非本地。