web-dev-qa-db-fra.com

Comparer deux formats de date en javascript / jquery

J'ai ce qui suit:

var fit_start_time  = $("#fit_start_time").val(); //2013-09-5
var fit_end_time    = $("#fit_end_time").val(); //2013-09-10

if(Date.parse(fit_start_time)>=Date.parse(fit_end_time)){
    alert("Please select a different End Date.");
}

Le code ci-dessus ne fonctionne pas. Y a-t-il une autre solution à celle ci-dessus?

formatage de la date selon Où puis-je trouver de la documentation sur le formatage d'une date en JavaScript? ça marche aussi pour moi.

18
Roy M J

C'est assez simple:

if(new Date(fit_start_time) <= new Date(fit_end_time))
{//compare end <=, not >=
    //your code here
}

La comparaison de 2 instances de Date fonctionnera très bien. Il appellera simplement valueOf implicitement, en contraignant les instances Date à des entiers, qui peuvent être comparés à l'aide de tous les opérateurs de comparaison. Eh bien, pour être précis à 100%: les instances Date seront contraintes au type Number, car JS ne connaît pas les nombres entiers ou flottants, ils sont tous signés 64 bits IEEE 754 double précision nombres à virgule flottante.

47
Elias Van Ootegem

Comme dans votre exemple, le fit_start_time N'est pas plus tard que le fit_end_time.

Essayez-le dans l'autre sens:

var fit_start_time  = $("#fit_start_time").val(); //2013-09-5
var fit_end_time    = $("#fit_end_time").val(); //2013-09-10

if(Date.parse(fit_start_time) <= Date.parse(fit_end_time)){
    alert("Please select a different End Date.");
}

Mise à jour

Votre code implique que vous voulez voir le alert avec les variables actuelles que vous avez. Si tel est le cas, le code ci-dessus est correct. Si vous avez l'intention (selon l'implication de l'alerte message) est de vous assurer que leur variable fit_start_time Est une date qui est avant le fit_end_time, alors votre code d'origine est correct, mais les données que vous obtenez à partir des méthodes jQuery .val() ne sont pas analysées correctement. Il serait utile que vous nous donniez le code HTML réel que le sélecteur renifle.

3
shennan

Pour comparer les dates du format de chaîne (mm-jj-aaaa).

    var job_start_date = "10-1-2014"; // Oct 1, 2014
    var job_end_date = "11-1-2014"; // Nov 1, 2014
    job_start_date = job_start_date.split('-');
    job_end_date = job_end_date.split('-');

    var new_start_date = new Date(job_start_date[2],job_start_date[0],job_start_date[1]);
    var new_end_date = new Date(job_end_date[2],job_end_date[0],job_end_date[1]);

    if(new_end_date <= new_start_date) {
      // your code
    }
3
Amal Kumar S

essayez avec new Date(obj).getTime()

if( new Date(fit_start_time).getTime() > new Date(fit_end_time).getTime() )
{
    alert(fit_start_time + " is greater."); // your code
}
else if( new Date(fit_start_time).getTime() < new Date(fit_end_time).getTime() )
{
    alert(fit_end_time + " is greater."); // your code
}
else
{
    alert("both are same!"); // your code
}
1
NaYaN

Essayez-le dans l'autre sens:

var start_date  = $("#fit_start_time").val(); //05-09-2013
var end_date    = $("#fit_end_time").val(); //10-09-2013
var format='dd-MM-y';
    var result= compareDates(start_date,format,end_date,format);
    if(result==1)/// end date is less than start date
    {
            alert('End date should be greater than Start date');
    }



OR:
if(new Date(start_date) >= new Date(end_date))
{
    alert('End date should be greater than Start date');
}
0
user2775080

C'est déjà dans:

Âge à partir de la date de naissance à l'aide de JQuery

ou bien vous pouvez utiliser Date.parse () comme dans

var date1 = new Date("10/25/2011");
var date2 = new Date("09/03/2010");
var date3 = new Date(Date.parse(date1) - Date.parse(date2));
0