что у меня есть два часа в формате строки, и мне нужно, чтобы вычислить разницу в JavaScript, пример:Как рассчитать разницу во времени между строк в JavaScript,
а = «10:22:57»
b = "10:30:00"
разница = 00:07:03?
что у меня есть два часа в формате строки, и мне нужно, чтобы вычислить разницу в JavaScript, пример:Как рассчитать разницу во времени между строк в JavaScript,
а = «10:22:57»
b = "10:30:00"
разница = 00:07:03?
Хотя использование Date
или библиотеки отлично (и, вероятно, проще), вот пример того, как это сделать «вручную» с небольшим количеством математики. Идея заключается в следующем:
hh:mm:ss
.Пример:
function toSeconds(time_str) {
// Extract hours, minutes and seconds
var parts = time_str.split(':');
// compute and return total seconds
return parts[0] * 3600 + // an hour has 3600 seconds
parts[1] * 60 + // a minute has 60 seconds
+parts[2]; // seconds
}
var difference = Math.abs(toSeconds(a) - toSeconds(b));
// compute hours, minutes and seconds
var result = [
// an hour has 3600 seconds so we have to compute how often 3600 fits
// into the total number of seconds
Math.floor(difference/3600), // HOURS
// similar for minutes, but we have to "remove" the hours first;
// this is easy with the modulus operator
Math.floor((difference % 3600)/60), // MINUTES
// the remainder is the number of seconds
difference % 60 // SECONDS
];
// formatting (0 padding and concatenation)
result = result.map(function(v) {
return v < 10 ? '0' + v : v;
}).join(':');
Сколько времени вам понадобилось, чтобы подумать о таком решении! Кажется, что много работы :) – James111
Я больше не помню. Я также не знаю, почему я не использовал Date. Может быть, я просто хотел доказать, что это возможно без него :) –
Я использовал этот код, используя 'Date', который я создал, и он отлично работает! :) – James111
Сделайте два Date
объектов из них. Тогда вы можете сравнить.
Получите значение из обеих дат, которые вы хотите сравнить, и сделайте вычитание. Как это (предположим, foo
и bar
финики):
var totalMilliseconds = foo - bar;
Это даст вам количество миллисекунд между обоими. Некоторая математика преобразует это в дни, часы, минуты, секунды или все, что вы хотите использовать. Например:
var seconds = totalMilliseconds/1000;
var hours = totalMilliseconds/(1000 * 3600);
Что касается получения Date
от string
, вы должны смотреть в конструктор (проверьте первую ссылку), а также использовать его в том, что подходит вам лучше всего. Счастливое кодирование!
на самом деле, вы можете просто вычесть объекты Date, так как .valueOf() сопоставляется с .getTime() ... – dandavis
@dandavis Спасибо. Я не знаю, что было у меня в голове, когда я это написал. Исправлено сейчас. – Renan
@Koki w3schools - ужасный ресурс. Использовать MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date –
Вы должны использовать Дата объекты: http://www.w3schools.com/jsref/jsref_obj_date.asp
Затем сравните: How to calculate date difference in javascript
http://www.w3fools.com/ -> https://developer.mozilla.org/ru-US/docs/Web/JavaScript/Reference/Global_Objects/Date –
очень простой способ, если у вас всегда будет меньше, чем за 12 часов:
a = "10:22:57";
b = "10:30:00";
p = "1/1/1970 ";
difference = new Date(new Date(p+b) - new Date(p+a)).toUTCString().split(" ")[4];
alert(difference); // shows: 00:07:03
, если вам нужно для форматирования более 12 часов, это сложнее сделать, # MS между датами правильна с использованием этой математики ...
создать два Diff объекты даты, вычитать меньшее из большего (или используйте Math.abs(), чтобы гарантировать, что Вы получаете положительное число) , конвертировать ms в часы: min: seconds –
Немного поиска не повредит ... [Это для того, чтобы знать, как преобразовать String в Date] (http://stackoverflow.com/questions/5619202/converting-string-to -date-in-js) и [это для вычитания двух дат/времени один f rom другой] (http: // stackoverflow.com/questions/1787939/check-time-difference-in-javascript) – RaphaelDDL
Обработка дат и времени в Javascript достаточно, чтобы водить сильных мужчин, чтобы выпить. Это один из тех случаев, когда «использовать библиотеку» вполне может быть правильным ответом, если у вас есть что-то даже смутно сложное, что вам нужно сделать. – lonesomeday