我将日期时间和日期存储为javscript中的字符串,我需要进行比较。
将它们留作字符串似乎有效:
const date1 = '2016-01-26 05:20:44'
const date2 = '2016-01-26 06:20:44'
const date3 = '2016-02-26'
date1 > date2 //false
date1 < date2 //true
date3 > date2 //true
date3 > date1 //true
date1 > date3 //false
问题:我能依靠这个吗?或者这是一个&#34;它有效,但它不可靠&#34;什么交易?
我应该将日期字符串转换为日期对象(使用date
或moment
)
答案 0 :(得分:2)
如果这是您的格式,它应该继续工作。想一想:这种格式的一个主要优点就是可以排序。
当然,Date对象本身也是可排序的。用于比较它们的内部valueOf
方法返回自固定时间以来的毫秒数。
答案 1 :(得分:0)
更新.....
function removeAllNoNumber(a) {
return a.toString().replace(/\D/g, '');
}
function padRight(source, padChar, padCount) {
var dif = padCount - source.toString().length;
if (dif <= 0) {
return source;
} else {
var c = "";
for (var i = 0; i < dif; i++) {
c += padChar.toString();
}
return (source + c);
}
}
function timeToInt(a){
return parseInt(padRight(removeAllNoNumber(a),"0",14),10);
}
var date1 = timeToInt("2016-01-26 05:20:44"); //20160126052044
var date2 = timeToInt("2016-01-26 06:20:44"); //20160126062044
var date3 = timeToInt("2016-01-26"); //20160126000000
if (date1 < date2) {
alert("here");
}
答案 2 :(得分:0)
如果格式永远不会因使用substring()
date1.substring(0,10)
date2.substring(0,10)
date3.substring(0,10)
输出到子串
"2016-01-26"
"2016-01-26"
"2016-02-26"
现在您可以通过比较它们来比较提取的日期子串,如
date1.substring(0,10) > date1.substring(0,10) //false
它有点乱,但它会让你保持主弦不变。