如何比较HH:MM:SS格式的两个时间字符串?

Nul*_*ter 71 javascript

我有两个HH:MM:SS格式的时间字符串.例如,str1contains 10:20:45, str2contains 5:10:10.

如何比较上述值?

And*_*y E 131

正如Felix Kling在评论中所说,如果您的时间基于24小时制(如果没有AM/PM则应该是这样)并且如果它们始终采用格式,HH:MM:SS您可以进行直接字符串比较:

var str1 = "10:20:45",
    str2 = "05:10:10";

if (str1 > str2)
    alert("Time 1 is later than time 2");
else
    alert("Time 2 is later than time 1");
Run Code Online (Sandbox Code Playgroud)

  • @Mubeen1992:这就是为什么我的回答说这要求时间基于 24 小时制。您必须为您的场景使用不同的方法。 (2认同)
  • @ Mubeen1992:`1:10 am`是不规则的24小时时间格式.`01:10`会更正确,'01:10`会与`12:10`正确比较.就像我说的,对于你的字符串,你需要使用不同的方法. (2认同)

Evg*_*nev 104

Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
> true
Run Code Online (Sandbox Code Playgroud)

1月1日是任意日期,没有任何意义.

  • **注意**:由于浏览器的差异和不一致,强烈不建议使用`Date.parse`来解析字符串。[MDN](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date#Methods) (4认同)

hie*_*ien 7

Date js 中的对象支持比较,将它们设置为相同的日期进行比较 hh:mm:ss :

new Date ('1/1/1999 ' + '10:20:45') > new Date ('1/1/1999 ' + '5:10:10') 
> true
Run Code Online (Sandbox Code Playgroud)


Kis*_*tel 6

您可以使用以下代码轻松完成:

注意:RegExp 中的第二个参数是“g”,它是全局搜索标志。全局搜索标志使 RegExp 在整个字符串中搜索模式,创建一个包含所有可以找到与给定模式匹配的匹配项的数组。以下代码仅在时间采用 HH:MM:SS 格式(即 24 小时时间格式)时才有效

var regex = new RegExp(':', 'g'),
    timeStr1 = '5:50:55',
    timeStr2 = '6:17:05';
if(parseInt(timeStr1.replace(regex, ''), 10) < parseInt(timeStr2.replace(regex, ''), 10)){
  console.log('timeStr1 is smaller then timeStr2');
} else {
  console.log('timeStr2 is smaller then timeStr1');
}
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试使用此代码获取 24 小时格式的时间。

<script type="text/javascript">
var a="12:23:35";
var b="15:32:12";
var aa1=a.split(":");
var aa2=b.split(":");

var d1=new Date(parseInt("2001",10),(parseInt("01",10))-1,parseInt("01",10),parseInt(aa1[0],10),parseInt(aa1[1],10),parseInt(aa1[2],10));
var d2=new Date(parseInt("2001",10),(parseInt("01",10))-1,parseInt("01",10),parseInt(aa2[0],10),parseInt(aa2[1],10),parseInt(aa2[2],10));
var dd1=d1.valueOf();
var dd2=d2.valueOf();

if(dd1<dd2)
{alert("b is greater");}
else alert("a is greater");
}
</script>
Run Code Online (Sandbox Code Playgroud)


pmi*_*nda 5

将这些字符串转换为秒:

var str1 = '10:20:45';
var str2 = '5:10:10';

str1 =  str1.split(':');
str2 =  str2.split(':');

totalSeconds1 = parseInt(str1[0] * 3600 + str1[1] * 60 + str1[2]);
totalSeconds2 = parseInt(str2[0] * 3600 + str2[1] * 60 + str2[2]);

// compare them

if (totalSeconds1 > totalSeconds2 ) { // etc...
Run Code Online (Sandbox Code Playgroud)