2011-04-14 6 views
3

J'ai champ de date, Onclick sur la date feild, je dois calculer la date avec la date actuelle .if date d'entrée est un mois plus ancien qu'aujourd'hui date.Je dois popup amessage dire date est olderthan 1 mois.Javascript date calcul

Le format de date est "aaaa-MM-jj" .je veux comparer avec la date "1984-03-20" à aujourd'hui la date "2011-04-14" .it devrait renvoyer le nombre de mois.

Des indices à ce sujet. Cordialement,

chaitu

+0

Avez-vous un Date objet de la date enterade ou est juste tout String? – Felipe

+0

Felipe: Je vais entrer la date en tant que chaîne au format aaaa-MM-jj. – user569125

+0

Ensuite, vous pouvez faire simplement "new Date (theDateString)" pour avoir un objet date. Et il y a beaucoup de réponses comment utiliser l'objet date ci-dessous. – Felipe

Répondre

3

Voir ce discussion il a des démos pour obtenir la différence de date dans javascript. Aussi c'est un bon exemple: javascript-date-difference-calculation il montre comment obtenir une différence en mois, en semaine ou en année.

+0

@ user569125: vous pouvez le faire pour accepter la date au format aaaa-MM-jj. –

2

La meilleure façon de comparer les dates en javascript est d'abord le convertir en un objet Date, puis comparer ces dates-objets.

Ci-dessous vous trouvez un objet avec la fonction ci-dessous:

dates.inRange (d,start,end) 

Returns a boolean or NaN: 

    * true if d is between the start and end (inclusive) 
    * false if d is before start or after end. 
    * NaN if one or more of the dates are illegal. 
0
var dt = new Date('02 Jul 2009'); 
dt.setMonth(dt.getMonth() – 1); 

Vous pouvez lire sur l'objet Date js pour voir quels formats qu'il peut accepter.

A blog about JS Date formats

0

Vous pouvez faire quelque chose comme ça:

<script type="text/javascript"> 

     function checkdate(){ 

      var today = new Date() 

      var dating = document.getElementById("date").attr("value"); 

      var new = new Date(dating); 

      var diff = today - new; 

      var days = Math.round(diff/(1000*60*60*24)); 

      if (days >= 30){ 

       alert("more than one month!"); 
      } 
     } 

    </script> 

    <html><body> 
     <input type="text" id="date" onClick="checkdate();"/> 
    </html></body> 
0

Cela fonctionnerait. Passez la valeur du champ à dateString onclick et le code déterminera si la date est antérieure à 1 mois ou non.

var dateString = '3/26/2011'; 
var selectDate = new Date(dateString); // convert string to date 
var monthOld = new Date(); 

monthOld.setDate(monthOld.getDate() - 30); // subtract 30 days 

if (selectDate < monthOld) { 
    alert('older than one month'); 
} 
else alert('ok'); 

Démo: http://jsfiddle.net/cw4vb/

0

Tout d'abord je vous conseille d'ajuster votre exigence de 30 jours. C'est probablement bien pour vos utilisateurs et est sans ambiguïté pour vous et pour eux. 1 mois peut être de longueur variable selon la période de l'année.

pour solution commencer par

var millisecond = 1; 
var second = 1000; 
var minute = second * 60; 
var hour = minute * 60; 
var day = hour * 24; 
var week = day* 7; 

puis à l'entrée de la date faire

if (usersDate < new Date().getTime() - 30 * day) { 
    //Do popup/whatever 
} 

Alternativement, si vous voulez vraiment faire l'intervalle basé sur mois, puis faites

var now = new Date(); 
if (usersDate < now.setMonth(now.getMonth() - 1))) { 
//Do popup/whatever 
}