463 votes

En comparant la partie date seulement sans comparer les temps en JavaScript

Quel est le problème avec le code ci-dessous ?

Il serait peut-être plus simple de juste comparer date et pas le temps. Je ne sais pas comment faire non plus et j’ai cherché, mais je ne pouvais pas trouver mon problème exact.

BTW, quand j’ai afficher les deux dates dans une alerte, ils montrent aussi exactement la même chose.

Mon code :

Y a-t-il un moyen plus simple de comparer les dates d’arrivée et non compris le temps ?

863voto

nexar Points 2558

Je suis encore à apprendre le JavaScript, et le seul moyen que j'ai trouvé qui fonctionne pour moi de comparer deux dates, sans le temps est d'utiliser l' setHours méthode de l'objet Date et régler les heures, les minutes, les secondes et les millisecondes à zéro. Puis de comparer les deux dates.

Par exemple,

date1 = new Date()
date2 = new Date(2011,8,20)

date2 sera mis de avec heures, minutes, secondes et millisecondes à zéro, mais date1 y aurai mis le temps date1 a été créé. Pour se débarrasser des heures, minutes, secondes et millisecondes sur date1 effectuer les opérations suivantes:

date1.setHours(0,0,0,0)

Maintenant, vous pouvez comparer les deux dates les DATES que sans vous soucier de la durée des éléments.

9voto

Useless Code Points 3233

Cela pourrait être un peu plus propre version, notez également que vous devriez toujours utiliser un radix lors de l'utilisation de parseInt.

window.addEvent('domready', function() {
    // Create a Date object set to midnight on today's date
    var today = new Date((new Date()).setHours(0, 0, 0, 0)),
    input = $('datum').getValue(),
    dateArray = input.split('/'),
    // Always specify a radix with parseInt(), setting the radix to 10 ensures that
    // the number is interpreted as a decimal.  It is particularly important with
    // dates, if the user had entered '09' for the month and you don't use a
    // radix '09' is interpreted as an octal number and parseInt would return 0, not 9!
    userMonth = parseInt(dateArray[1], 10) - 1,
    // Create a Date object set to midnight on the day the user specified
    userDate = new Date(dateArray[2], userMonth, dateArray[0], 0, 0, 0, 0);

    // Convert date objects to milliseconds and compare
    if(userDate.getTime() > today.getTime())
    {
            alert(today+'\n'+userDate);
    }
});

La caisse de la MDC parseInt page pour plus d'informations sur le radix.

JSLint est un excellent outil pour attraper les choses comme un manque radix et beaucoup d'autres choses qui peuvent causer d'obscurs et difficiles à déboguer les erreurs. Il vous oblige à utiliser au mieux les normes de codage afin de vous éviter des soucis à l'avenir. Je l'utilise sur chaque projet JavaScript je code.

3voto

Diodeus Points 67946

La bibliothèque date.js est pratique pour ces choses. Il facilite beaucoup tous les scriping sur les dates JS.

2voto

Fabrizio Points 1329

Il s’agit de la façon dont je le fais :

1voto

Alex K. Points 67805

Assurez-vous que vous construisez avec une année à 4 chiffres, comme .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X