Работа со временем в JS
Значит s.cal[id].time выводит время из определенного элемента (не текущее) в формате Ч:М (12:00), как состряпать условие, которое будет брать время и плюсовать к нему например 50 минут и сравнивать с текущим, если истина выполняем определенный код? Что-то вроде этого...
if (s.cal[id].time + 50 min >= time) {
//что-то делаем
};
Ответы (3 шт):
Если писать с костылями, то в том формате, в котором задан вопрос, будет работать следующее:
var hours = (s.cal[id].time).split(":")[0];
var minutes = (s.cal[id].time).split(":")[1];
var addedMinutes = 50;
var time = "12:30"; //время, с которым сравниваем
var hoursCompare = time.split(":")[0];
var minutesCompare = time.split(":")[1];
hours = parseInt(hours, 10) + Math.floor((minutes + addedMinutes)/60);
minutes = parseInt(minutes, 10) + ((minutes + addedMinutes)%60);
if (hours >= hoursCompare && minutes >= minutesCompare) {
//что-то делаем
};
P.s. давно это делал, могут быть ошибки в синтаксисе, но общая суть такая
Если не используете библиотеки, то вот так должно работать. Но, если вам часто надо работать с датой\временем, то лучше использовать momentjs.
// s.cal[id].time + 50 min >= time
function parseTimeHHMM(stringTime) {
return time.split(":").map(Number);
}
function setTime(date, hours = 0, minutes = 0, seconds = 0, ms = 0) {
date.setHours(hours, minutes, seconds, ms);
}
function addMinutes(date, minutes = 0) {
date.setMinutes(date.getMinutes() + minutes);
}
const time = "12:00";
// парсим строку в часы и минуты (еще хорошо бы знать формат AM\PM или 24 часовой)
const [hours, minutes] = parseTimeHHMM(time);
const timeDate = new Date();
//устанавливаем время для объекта даты
setTime(timeDate, hours, minutes);
// создаем новую дату
const in50MinutesDate = new Date(timeDate);
//добавляем 50 минут
addMinutes(in50MinutesDate, 50);
const currentDate = new Date();
console.log(currentDate, timeDate, in50MinutesDate);
//сравниваем даты
if (in50MinutesDate >= currentDate) {
console.log('yes');
} else {
console.log('no');
}
Т.к. нужно просто сравнить... чч * 60 + мм
let time = "23:24"; // s.cal[id].time;
let d = new Date();
let prev = calc_minutes(...time.split(":"));
let curr = calc_minutes(d.getHours(), d.getMinutes());
console.log( prev, curr, prev + 50 > curr );
function calc_minutes(hh, mm) {
return hh * 60 + Number(mm);
}
При необходимости prev + 50 > curr заменить на (prev + 50) % (24 * 60) > curr, чтобы 24:30 считался как 00:30