2015-12-21 1 views
-3

Это простая вещь, чтобы сделать на PHP с таким кодом;Проверьте, не отличается ли разница во времени менее 45 минут, и если время прошло мимо текущего времени - AngularJS

if (strtotime($given_time) >= time()+300) echo "You are online"; 

Но ничего не может найти на SO, чтобы сделать именно это в javascript. Я хочу, чтобы проверить, если разница между заданным временем и текущее время меньше, чем 45 минут

Например

$scope.given_time = "14:10:00" 
$scope.current_time = new Date(); 

Я беспокоюсь только со временем часть. Мне нужно извлечь временную часть от new Date();, а затем сравнить.

Тогда это должно быть true

Как я могу добиться этого с помощью Javascript:

if ($scope.given_time - $scope.current_time < 45 minutes && if $scope.given_time > time()) { 
    // do something 
} 

Ниже функция, обеспечиваемая @Pete решает первую часть (45mins часть)

function checkTime(time) { 
    var date = new Date(); 
    var date1 = new Date((date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear() + " " + time); 

    var minutes = (date1.getTime() - date.getTime())/(60 * 1000); 

    if (minutes > 45 || (minutes < 0 && minutes > -1395)) { 
    // greater than 45 is todays time is above 45 minutes 
    // less than 0 means the next available time will be tomorrow and the greater than -1395 means it will be more than 45 minutes from now into tomorrow 

    document.write(time + ': true<br />'); 
    } else { 
    document.write(time + ': false<br />'); 
    } 
} 

ответ

1

сравните его с отметками времени. ИМО это самый простой способ. Я не знаю, что это имеет отношение к angularJs.

var currentTimeStamp = new Date().getTime(); //timestamp in ms 
var beforeTimeStamp = startDate.getTime(); //timestamp in ms 

if (currentTimeStamp - beforeTimeStamp < 45*60*1000 && currentTimeStamp - beforeTimeStamp > 0) { 
    //do smth 
} 

отмечают, что startDate является дата, которая была создана, войдя в, например.

+0

Это не дает ответа на весь вопрос –

+3

, потому что тема плакат изменил свой вопрос впоследствии – messerbill

2

Вычитание двух объектов даты приводит к разнице в миллисекундах. Так сравните это с количеством миллисекунд за 45 минут.

var date1 = new Date(); 
 
var date2 = new Date(); 
 
date2.setTime(date2.getTime() + (50 * 60 * 1000)); //adding 50 minutes just to see console message 
 
    
 
if (date2-date1 >= 45*60*1000) { 
 
    console.log("greater than 45 minutes"); 
 
}

+0

ли это положить в дату счета? если время попадает в завтра? –

+0

Да потому, что вызов 'new Date' создает данные даты для данной даты, а также время. – jusopi

Смежные вопросы