我有24小时格式的时间字符串,如20:50和23:00
现在我想在javascript中创建一个方法来确定1次是否早于其他时间。我在php中这样做了:
function isLater($time1, $time2) {
$time1 = new DateTime($time1);
$time2 = new DateTime($time2);
if ($time1 > $time2) {
return true;
}
return false;
}
function isEarlier($time1, $time2) {
$time1 = new DateTime($time1);
$time2 = new DateTime($time2);
if ($time1 < $time2) {
return true;
}
return false;
}
我的问题是,在javascript中执行此操作的最佳方法是什么?
答案 0 :(得分:3)
使用与PHP相同的结构,您可以这样做:
function isLater(time1, time2) {
if (time1 > time2) {
return true;
}
return false;
}
function isEarlier(time1, time2) {
if (time1 < time2) {
return true;
}
return false;
}
因为JavaScript会将“a”视为小于“b”而“2”小于“3”,因此无需转换为日期时间。
如果你想让代码更短,你可以做这样的功能:
function isLater(time1, time2) {
return time1 > time2;
}
function isEarlier(time1, time2) {
return time1 < time2;
}
这个较短的版本甚至可以在PHP中工作(假设您为变量添加$符号)。
答案 1 :(得分:1)
转换为公共值并进行比较。转换为Date对象实际上是以毫秒为单位转换为时间值,但在这种情况下,由于您没有日期部分,因此转换为分钟会更简单。这假设两个日期当然是在同一天:
function toMinutes(time) {
var b = time.split(':');
return b[0]*60 + +b[1];
}
现在比较转换为分钟的两个值:
if (toMinutes(timeA) < toMinutes(timeB)) {
// timeA is before timeB
}
答案 2 :(得分:0)
JavaScript无法像您提供的那样将任意小时格式解析为日期。如果您知道24小时格式始终采用XX:XX
格式,则只需比较字符串:
'20:50' > '23:00' === false