javascript - 比较 JavaScript 中的新日期失败

标签 javascript date

我正在尝试为数据表开发自定义日期范围过滤器。用户可以在两个输入中输入开始日期和结束日期并过滤整个表。

输入开始日期和结束日期时,结果会匹配。当我只输入两者之一时,结果失败。例如;开始日期是 12/01/2017,但我可以看到日期为 29-11-2016 的实例...我的过滤代码:

$('#filter').on('click', function(e) {
            e.preventDefault();
            var startDate = $('#start').val(),
                endDate = $('#end').val();

            filterByDate(10, startDate, endDate); // We call our filter function

            $dTable.dataTable().fnDraw(); // Manually redraw the table after filtering
        });

        var filterByDate = function(column, startDate, endDate) {
            $.fn.dataTableExt.afnFiltering.push(
                function( oSettings, aData, iDataIndex ) {
                    var rowDate = normalizeDate(aData[10]),
                        start = normalizeDate(startDate),
                        end = normalizeDate(endDate);


                    // If our date from the row is between the start and end
                    if (start <= rowDate && rowDate <= end) {
                        console.log(start <= rowDate);
                        return true;
                    } else if (rowDate >= start && end === '' && start !== ''){
                        console.log(rowDate >= start && end === '' && start !== '');
                        return true;
                    } else if (rowDate <= end && start === '' && end !== ''){
                        return true;
                    } else {
                        return false;
                    }
                }
            );
        };

        var normalizeDate = function(dateString) {
            var date = new Date(dateString);
            var normalized = ("0" + date.getDate()).slice(-2) + '/'+ (("0" + (date.getMonth() + 1)).slice(-2)) + '/' +date.getFullYear() ;
            return normalized;
        };

有没有 JavaScript 天才可以帮我比较一下 rowData >= start....rowDate <= end....工作正常吗?输入日期由/分隔。在我的表中 / ,但 normalizeData 函数使它们具有相同的布局。

最佳答案

您可以使用以下内容来比较两个日期!

在此示例中,您使用 UNIX 时间戳来比较两个日期。

if ((new Date(startDate).getTime() > new Date(endDate).getTime())) { 
  // start date is greater than end date
}

if ((new Date(startDate).getTime() < new Date(endDate).getTime())) { 
  // start date is lower than end date
}

工作片段:

var startDate = document.getElementById('start').value;
var endDate = document.getElementById('end').value;

if ((new Date(startDate).getTime() > new Date(endDate).getTime())) {
  console.log("start date is greater than end date")
}

if ((new Date(startDate).getTime() < new Date(endDate).getTime())) {
  console.log("start date is lower than end date")
}
<input id="start" value="10/10/2017"/>
<input id="end" value="12/10/2017"/>

关于javascript - 比较 JavaScript 中的新日期失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612336/

相关文章:

javascript: var i 未定义? (明确规定)

javascript - 如何在JavaScript中将句号、问号和感叹号后的首字母大写?

javascript - 展开特定元素

javascript - 在javascript中计算日期之间的差异

javascript - 将鼠标悬停在子元素上并在父元素上附加 scss

javascript - API 在 Postman 中有效,但在浏览器中无效

php - 如何从 MySQL 时间戳转换为 PHP Y-m-d?

mysql - vb.net DateTimePicker 删除时间 12 :00:00 AM

sql - Oracle SQL - 周开始星期日和周末结束星期六

mysql - 为什么该查询每次都返回 1?