如何在javascript中比较时间?

Bas*_*sel 12 javascript string time casting date

我有两次格式"HH:MM"我想比较它们我有以下代码来获取我的格式的时间:

current_time = new Date();
hour = current_time.getHours();
minute = current_time.getMinutes();
if(hour<10){hour='0'+hour} if(minute<10){minute='0'+minute}
my_time = hour+':'+minute;
Run Code Online (Sandbox Code Playgroud)

这段代码是为了在减去GMT差异后得到时间:

d = new Date()
var n = d.getTimezoneOffset();
var n1 = Math.abs(n);
var difference = (n1/60); 
my_time = my_time - (0+difference);
Run Code Online (Sandbox Code Playgroud)

现在应该将my_time的值与match_time的值进行比较:

match_time = 10:00;//for example
if(my_time > match_time)
{
  alert('yes');
}
else
{
  alert('No');
}
Run Code Online (Sandbox Code Playgroud)

如何将这些值作为字符串的时间进行比较?

Igo*_*kin 30

假设您对时区不感兴趣,只需要比较 24 小时时间格式的两个格式化时间字符串,则只需比较字符串即可。

let time1 = '09:12';
let time2 = '12:22';

if (time1 > time2) {
 alert('yes')
} else {
 alert('no')
}

Run Code Online (Sandbox Code Playgroud)

它之所以有效,是因为 JS 中的字符串是逐个符号进行比较的。所以在比较时,'09:12' > '12:22'JS首先检查是否'0' == '1'为 false '0' > '1',然后返回结果。

对于字符串比较'01' > '02',它将检查是否'0' == '0'然后跳到两个字符串中的下一个符号并比较'1' > '2'哪个为假。

字符串必须标准化为 hh:mm,否则你会得到意想不到的结果,例如:

"9:12" > "12:22" //true
Run Code Online (Sandbox Code Playgroud)

  • 不客气。它之所以有效,是因为 JS 中的字符串是逐个符号进行比较的。因此,当比较 '09:12' &gt; '12:22' 时,JS 首先检查是否 '0' == '1' 以及是否为 false '0' &gt; '1',然后返回结果。对于像 '01' &gt; '02' 这样的字符串,它将检查 '0' == '0' 是否存在,如果为 true 则跳到两个字符串中的下一个符号,因此接下来将比较 '1' &gt; '2'(为 false)。 (3认同)

Gab*_*vel 14

使用Date对象.Date.setHours()允许您指定小时,分钟,秒

var currentD = new Date();
var startHappyHourD = new Date();
startHappyHourD.setHours(17,30,0); // 5.30 pm
var endHappyHourD = new Date();
endHappyHourD.setHours(18,30,0); // 6.30 pm

console.log("happy hour?")
if(currentD >= startHappyHourD && currentD < endHappyHourD ){
    console.log("yes!");
}else{
    console.log("no, sorry! between 5.30pm and 6.30pm");
}
Run Code Online (Sandbox Code Playgroud)


Arj*_*Sol 6

Date.parse('25/09/2013 13:31') > Date.parse('25/09/2013 9:15')
Run Code Online (Sandbox Code Playgroud)

编辑:

请注意,您正在解析您不感兴趣的任意日期,它只需要在双方相同。

  • Date.parse 取决于实现,在这种情况下,将在某些浏览器(例如 Safari)中返回 NaN。OP可以直接将字符串作为字符串进行比较。 (2认同)