我有兩個時間字符串hh:mm:ss
格式。 (例如:12:40:13
和20:01:01
。)我如何在JavaScript中比較這些內容?比較兩次(hh:mm:ss)字符串
3
A
回答
11
我喜歡有日期的對象,但在其他地方所指出的,你可以轉換到秒,如果你想要做簡單的比較
function dateCompare(time1,time2) {
var t1 = new Date();
var parts = time1.split(":");
t1.setHours(parts[0],parts[1],parts[2],0);
var t2 = new Date();
parts = time2.split(":");
t2.setHours(parts[0],parts[1],parts[2],0);
// returns 1 if greater, -1 if less and 0 if the same
if (t1.getTime()>t2.getTime()) return 1;
if (t1.getTime()<t2.getTime()) return -1;
return 0;
}
alert(dateCompare("12:40:13","20:01:01"));
爲秒:
function dateDiff(time1,time2) {
var t1 = new Date();
var parts = time1.split(":");
t1.setHours(parts[0],parts[1],parts[2],0);
var t2 = new Date();
parts = time2.split(":");
t2.setHours(parts[0],parts[1],parts[2],0);
return parseInt(Math.abs(t1.getTime()-t2.getTime())/1000);
}
假設你有24小時的時間和相同的填充,你可以做簡單的字符串比較
var t1 = "12:40:13", t2= "20:01:01";
if (t1<t2) {
console.log(t1," is < ", t2);
}
1
這裏有一個建議,我從this website here的解決方案中修改,希望它有幫助。
function compareTime(time_1, time_2) {
var s1 =
time1.split(":")[0] * 3600 + time1.split(":")[1] * 60 + time1.split(":")[2];
var s2 =
time2.split(":")[0] * 3600 + time2.split(":")[1] * 60 + time1.split(":")[2];
return Math.abs(s1 - s2); // Gets difference in seconds
}
var time_1 = "12:40:13", time_2 = "20:01:01";
document.write(compareTime(time_1, time_2));
6
如果「比較」的意思是「看看他們是平等的」,兩個具有相同的格式,爲什麼不乾脆:
var time1 = "12:40:13";
var time2 = "20:01:01";
if (time1 == time2) {
// do stuff
}
如果你需要得到時間的不同,轉換到一個日期對象是單向的(見mplungjan的答案),或者你可以將它們轉換爲公共單位(比如秒)和減:
function toSeconds(t) {
var bits = t.split(':');
return bits[0]*3600 + bits[1]*60 + bits[2]*1;
}
var secs1 = toSeconds(time1);
var secs2 = toSeconds(time2);
// do stuff - compare, subtract, less than, greater than, whatever
1
這裏的另一種看法:
function compareTimes(timeOne, timeTwo) {
if(daterize(timeOne) > daterize(timeTwo)) return 1;
if(daterize(timeOne) < daterize(timeTwo)) return -1;
return 0;
}
function daterize(time) {
return Date.parse("Thu, 01 Jan 1970 " + time + " GMT");
}
您可能還想看看MDN Javascript docs for Dates。 JavaScript帶有很多陷阱,比如Date.month會從0到11。
1
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
The 1st January is an arbitrary date, doesn't mean anything.
相關問題
- 1. 如何比較格式爲HH:MM:SS的兩個時間字符串?
- 2. 比較兩個字符串[]
- 3. 比較兩個字符串?
- 4. 比較兩組字符串
- 5. 比較兩個字符串
- 6. 比較字符串兩場
- 7. 燙傷:兩兩比較字符串?
- 8. C++比較兩個字符串文字
- 9. 比較兩個數字字符串值
- 10. 比較兩個字符串由字母
- 11. 在日期時間比較唯一一次字符串的形式HH:MM:SS
- 12. 比較通配符字符串 - 通配比較的兩側
- 13. 逐字比較.NET中兩個字符串的比較
- 14. 批次:比較日期字符串
- 15. 字符/字符串比較
- 16. 字符串字符比較
- 17. 兩次比較
- 18. 比較兩次
- 19. PHP不能比較兩個「字符串」
- 20. 比較兩個XML字符串
- 21. 比較兩個字符串與Android
- 22. 兩個字符串然後比較
- 23. 比較兩個寬字符串visual C++
- 24. Java excel - 比較兩個字符串
- 25. 比較兩個字符串的含義
- 26. 比較兩種語言字符串
- 27. lex yacc比較兩個字符串
- 28. 比較兩個字符串C#?
- 29. 如何比較兩個w_char []字符串
- 30. 比較ruby中的兩個字符串
是啊,我總是讓約會對象 - 但顯然它並不總是必要的 – mplungjan
這很好,我只是想提供一個非日期的選擇。 – RobG
這比製作日期對象要快多少? – Whitecat