2010-12-10 6 views
2

J'ai une heure de début, date de début et de fin, heure de fin sur ma page web. Je dois m'assurer que si la date de début et de fin est égale, l'heure de fin doit être supérieure le temps et si la date de fin est plus grande que la date de début alors l'utilisateur peut entrer n'importe quand. Comment puis-je réaliser cette validation?Comparer le temps en utilisant Javascript

+0

comment sur l'utilisation de plug-in jquery'date ... – kobe

+0

sont-ils 'Date' ce? –

+0

cette question est proche de votre question http://stackoverflow.com/questions/833997/end-date-greater-than-start-date-jquery-validation – kobe

Répondre

6

Je recommanderais fortement quelque chose comme Datejs. Cela devrait vous donner un point de départ si:

// get the values from your form 
var startDate = $('input[name=startDate]').val(), 
    endDate = $('input[name=endDate]').val(), 
    startTime = $('input[name=startTime]').val(), 
    endTime = $('input[name=endTime]').val() 

Si vous décidez d'utiliser Datejs vous devez analyser les valeurs du champ de saisie à l'aide Date.parse(startDate). Découvrez le Getting Started. Si vous décidez de ne pas utiliser DateJs, vous pouvez ajouter getTime() à la variable startTime. (Par exemple - endTime.getTime() < startTime.getTime())

var error = ''; 

// if the start date is after the end date 
if (startDate > endDate){ 
    var error = error + 'Your start date is after your end date.'; 
} 
// if the start date and end date are the same -- and end time is before the start time 
else if(startDate == endDate && endTime < startTime){ 
    var error = error + 'Your end time is before your start time.'; 
}; 

// handle any errors 
if(error.length){ 
    alert(error); 
}; 
+0

+1 pour utiliser ce qui a déjà été construit –

+0

Pourquoi ty monsieur! I <3 Datejs, sauve une tonne de maux de tête! – jyoseph

+0

à la fois l'heure de début et l'heure de fin sont saisies mannuvally par l'utilisateur. il peut être dans le format comme 12.55am ou 01.22pm etc. et les dates sont dans le format de jj/mm/yy.That également entré par l'utilisateur – kbvishnu

3

Il est bon de savoir comment les choses fonctionne, et vous pourriez bénéficier de construire vous-même sans dépendre d'un cadre. Si vous voulez l'essayer, en supposant que vous avez des chaînes simples pour vos dates et heures, vous pouvez commencer par ceci:

var dateStart = "Oct 13, 2010"; 
var timeStart = "10:13"; 
​​​​​​var dateEnd = "Nov 11, 2011"; 
var timeEnd = "14:56"; 

var startDate = new Date(dateStart + " " + timeStart); 
var endDate = new Date(dateEnd + " " + timeEnd); 

alert(startDate > endDate); 

Pour le code réel voir http://jsbin.com/oponu3/edit

Si vous utilisez juste ceci pour comparer le temps, alors cela fonctionnerait:

var myDate = "Oct 13, 2010"; 
var timeStart = "10:13"; 
var timeEnd = "14:56"; 

var startDate = new Date(myDate + " " + timeStart); 
var endDate = new Date(myDate + " " + timeEnd); 

alert(startDate > endDate); 

Vous pouvez améliorer cela en vérifiant les valeurs de date illégales. Vérifiez la référence du W3C pour l'objet Date JavaScript pour cela: http://www.w3schools.com/js/js_obj_date.asp

// calculate difference (added 2012-04-04) 
var milliseconds = Math.abs(startDate.getTime() - endDate.getTime()); 
var seconds = milliseconds/1000; 
var minutes = seconds/60; 
var hours = minutes/60; 
// etc etc etc 
+0

@dyne je veux juste comparer l'heure. – kbvishnu

+0

ajouté un exemple pour vous avec juste le temps – dyve

+0

+1. Résout la moitié de mon but. Est-il possible de vérifier que la différence de temps entre les deux dates (y compris l'heure) est supérieure à 24 heures? Cela m'aidera vraiment si vous pouvez répondre à cette question. Je vous remercie. – Devner

Questions connexes