以 'hh:mm tt' 格式比较 javascript 中的两个时间
Compare two time in javascript in format 'hh:mm tt'
我要比较两次
所以我尝试了这些:
"01:03 AM" > "01:02 AM"
> true
"01:01 AM" > "01:02 AM"
> false
在这些情况下结果是正确的,但在这个情况下不是:
"12:55 AM" > "03:55 AM"
> true
如何以这种格式 "hh:mm tt"
正确比较两次?
是否需要把日期和时间包括进去,然后比较日期和时间?
更新: 由于 Safari 不支持 space 分隔日期,因此使用斜杠代替 space 适用于所有浏览器。
您需要先将时间转换为日期对象,然后再转换为时间戳。然后你可以比较时间戳。您可以遵循这个基本示例:
var t = new Date();
d = t.getDate();
m = t.getMonth() + 1;
y = t.getFullYear();
//Convert time into date object
var d1 = new Date(m + "/" + d + "/" + y + " " + "12:55 AM");
var d2 = new Date(m + "/" + d + "/" + y + " " + "03:55 AM");
//Get timestamp
var t1 = d1.getTime();
var t2 = d2.getTime();
t1 > t2 ? alert("t1 greater than t2") : alert("t2 greater than t1");
但是比较复杂的时间,还是要用插件。
将时间转换为分钟并进行比较
function toMin(str) {
var match = str.match(/(\d+):(\d+)\s(AM|PM)/)
var min = (+match[1] > 11 ? 0 : match[1] * 60) + +match[2];
if (match[3].toLowerCase() == 'pm') {
min += 720;
}
return min;
}
function gt(v1, v2) {
snippet.log(v1 + ' > ' + v2 + ': ' + (toMin(v1) > toMin(v2)))
}
function lt(v1, v2) {
snippet.log(v1 + ' < ' + v2 + ': ' + (toMin(v1) < toMin(v2)))
}
//then
gt('12:30 AM', '01:00 AM');
lt('12:30 AM', '01:00 AM');
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
我要比较两次
所以我尝试了这些:
"01:03 AM" > "01:02 AM"
> true
"01:01 AM" > "01:02 AM"
> false
在这些情况下结果是正确的,但在这个情况下不是:
"12:55 AM" > "03:55 AM"
> true
如何以这种格式 "hh:mm tt"
正确比较两次?
是否需要把日期和时间包括进去,然后比较日期和时间?
更新: 由于 Safari 不支持 space 分隔日期,因此使用斜杠代替 space 适用于所有浏览器。
您需要先将时间转换为日期对象,然后再转换为时间戳。然后你可以比较时间戳。您可以遵循这个基本示例:
var t = new Date();
d = t.getDate();
m = t.getMonth() + 1;
y = t.getFullYear();
//Convert time into date object
var d1 = new Date(m + "/" + d + "/" + y + " " + "12:55 AM");
var d2 = new Date(m + "/" + d + "/" + y + " " + "03:55 AM");
//Get timestamp
var t1 = d1.getTime();
var t2 = d2.getTime();
t1 > t2 ? alert("t1 greater than t2") : alert("t2 greater than t1");
但是比较复杂的时间,还是要用插件。
将时间转换为分钟并进行比较
function toMin(str) {
var match = str.match(/(\d+):(\d+)\s(AM|PM)/)
var min = (+match[1] > 11 ? 0 : match[1] * 60) + +match[2];
if (match[3].toLowerCase() == 'pm') {
min += 720;
}
return min;
}
function gt(v1, v2) {
snippet.log(v1 + ' > ' + v2 + ': ' + (toMin(v1) > toMin(v2)))
}
function lt(v1, v2) {
snippet.log(v1 + ' < ' + v2 + ': ' + (toMin(v1) < toMin(v2)))
}
//then
gt('12:30 AM', '01:00 AM');
lt('12:30 AM', '01:00 AM');
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>