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

IT技术 javascript
2021-01-26 14:59:02

我有两个HH:MM:SS格式的时间字符串例如,str1包含10:20:45str2包含5:10:10

如何比较上述值?

6个回答

正如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");
这太棒了,我喜欢简单。我发现的所有其他方法都迫使我在时间之上(隐式或明确地)强加一个日期,但我关心时间,所以这是完美的。
2021-03-17 14:59:02
@Mubeen1992:这就是为什么我的回答说这要求时间基于 24 小时制。您必须为您的场景使用不同的方法。
2021-03-21 14:59:02
使用此方法,如果我将字符串str1 = "00:10"字符串进行比较str2 = "01:10"并检查字符串 1 是否大于字符串 2 警报字符串字符串 1 更大,否则警报字符串 2 更大 我认为 12PM 大于凌晨 1 点,但它显示字符串 2 更大
2021-04-02 14:59:02
@Mubeen1992:1:10am作为 24 小时时间格式不规则。 01:10会更正确,并且01:10会与12:10. 就像我说的,对于你的字符串,你需要使用不同的方法。
2021-04-05 14:59:02
这取决于使用 ASCII 表示,因为代码很方便
2021-04-10 14:59:02
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
> true

1 月 1 日是一个任意日期,没有任何意义。

注意Date.parse由于浏览器的差异和不一致,强烈不鼓励解析字符串MDN
2021-03-17 14:59:02

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

new Date ('1/1/1999 ' + '10:20:45') > new Date ('1/1/1999 ' + '5:10:10') 
> true

尝试使用此代码获取 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>

试试这个代码。

var startTime = "05:01:20";
var endTime = "09:00:00";
var regExp = /(\d{1,2})\:(\d{1,2})\:(\d{1,2})/;
if(parseInt(endTime .replace(regExp, "$1$2$3")) > parseInt(startTime .replace(regExp, "$1$2$3"))){
alert("End time is greater");
}