javascript比较日期格式

时间:2018-04-12 23:49:53

标签: javascript jquery datetime

我正在尝试比较不同格式的日期。当我比较下面的内容时,我看到错误的结果,如何将日期转换为标准格式以获得正确的结果。

Heres my Fiddle

var date1 = "4/12/2018 9:52:21 PM";
    var date2 ="4/12/2018 9:52:51 PM";
    var date3 ="2018/04/12 21:54:40";
    var dateCondition1 = (date3>date2);
    var dateCondition2 = (date2>date1);
    alert(dateCondition1); //shows wrong result
    alert(dateCondition2); //shows right result

这是一个正确的比较吗?

var date1 = new Date("4/12/2018 9:52:21 PM");
var date2 =new Date("4/12/2018 9:52:51 PM");
var date3 =new Date("2018/04/12 21:54:40");
var dateCondition1 = (date3>date2);
var dateCondition2 = (date2>date1);
alert(dateCondition1); //shows wrong result
alert(dateCondition2); //shows right result

2 个答案:

答案 0 :(得分:1)

在第一个代码块中,您正在比较字符串

"4/12/2018 9:52:21 PM" > "4/12/2018 9:52:21 PM";

在第二个代码块中,比较是正确的,

enter image description here

为什么在2个字符串的比较中返回布尔值?

“马特球”

因为,与许多编程语言一样,字符串按字典顺序进行比较。

您可以将此视为字母顺序的更高版本,不同之处在于字母顺序仅覆盖26个字符a到z。

<强> ALTERNATIVE

使用库时刻js更容易

<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script>
//Currrent Date
var now = moment(),
custom = moment('Mon 03-Jul-2017, 11:00 AM', 'ddd DD-MMM-YYYY, hh:mm A');
document.write("Compare dates=>" + now.isAfter(custom));
</script>

如果您想使用这三种比较,您可以根据需要设置日期格式

<html>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
	    <script>
	    var now   = moment();
	    var date1 = moment('4/12/2018 9:52:21 PM','DD/MM/YYYY hh:mm:ss A');
	    var date2 = moment('4/12/2018 9:52:51 PM','DD/MM/YYYY hh:mm:ss A');
	    var date3 = moment('2018/04/12 21:54:40','YYYY/DD/MM hh:mm:ss A');
	    var dateCondition1 = (date3.isAfter(date2));
	    var dateCondition2 = (date2.isBefore(date1));
	    alert(dateCondition1);
	    alert(dateCondition2);
	    </script>
</html>

答案 1 :(得分:1)

尝试使用纯javascript:

&#13;
&#13;
var date1 = new Date("4/12/2018 9:52:21 PM");
var date2 =new Date("4/12/2018 9:52:51 PM");
var date3 =new Date("2018/04/12 21:54:40");
var dateCondition1 = (date3.getTime() > date2.getTime());
var dateCondition2 = (date2.getTime() > date1.getTime());
alert(dateCondition1);
alert(dateCondition2);
&#13;
&#13;
&#13;