使用Date.parse()时无效的日期

时间:2018-04-25 14:57:37

标签: javascript html date

我的网络应用程序上有一个日期选择器,它产生以下输出25-04-2018 16:50

enter image description here

它是:日 - 月 - 年 - 小时:分钟。

我的想法是,我将有两个输入文本,第一个日期必须在第二个日期之前。否则,交换日期。

我想比较这种格式的两个日期,所以我尝试创建一个Date对象:

<input onchange="date()" type="text" readonly id="datetimepicker_1"/>
<input onchange="date()" type="text" readonly id="datetimepicker_2"/>

<script>
    function date() {
        var start = document.getElementById("datetimepicker_1");
        var end = document.getElementById("datetimepicker_2");
        if (start.value.trim() && end.value.trim()) {
            var dateStart = new Date(start.value);
            var dateEnd = new Date(end.value);

            if (dateStart > dateEnd){
                document.getElementById("datetimepicker_1").value = end.value;
                document.getElementById("datetimepicker_2").value = start.value;
            }    
        }
</script>

但我有以下错误:Invalid Date。我如何比较这些日期?

1 个答案:

答案 0 :(得分:1)

看起来JavaScript不能容忍你的日期格式。

您的日期格式为“日 - 月 - 年 - 小时 - 分钟”或DD-MM-YYYY

我能够在两个场景中使用以下代码;日期格式为:“年 - 月 - 日 - 小时 - 分钟”或“月 - 日 - 年小时分钟”

这段代码编写得非常糟糕,但我认为它说明了这个想法。

function DatePicker()
{
var datestart = new Date("2018-04-25 16:50"); //or 04-25-2018 16:50
console.log(datestart);
var datestart2 = new Date("2018-04-25 16:55"); //or 04-25-2018 16:50
console.log(datestart2);

if (datestart < datestart2)
{
    console.log("success");
} else {
    console.log("failed");
}

}

DatePicker();

我认识到世界上不同的国家/地区使用不同的日期格式。因此,为了解决您的问题,我建议使用“Moment.js”,以便您可以根据自己的喜好或需求格式化日期,如下面链接的Stack Overflow问题和答案所示。

DD/MM/YYYY Date format in Moment.js