Trouver le minimum et le maximum de dates
Il y a un tableau:
var a = new Array();
Il contient les entrées de date comme ceci: '2012-09-12 09:20', etc
J'ai besoin de trouver le minimum et le maximum de dates à l'aide de javascript. Ce code ne fonctionne pas avec les valeurs de temps.
var minT = Math.min.apply(Math, a);
var maxT = Math.max.apply(Math, a);
Comment puis-je résoudre ce problème en javascript? Il semble être assez complexe que je ne suis pas très expérimenté dans cette langue.
Est-ce que votre tableau contient la date de chaînes, ou
double possible de Trouver la date la plus ancienne à une liste de dates
Les cordes, il aurait travaillé avec
Juste pour ajouter quelque chose de convertir votre date en timestamp unix, et vous pouvez les utiliser
Les convertir en objets est un moyen de convertir les horodatages. Vous pouvez facilement obtenir un certain nombre de millisecondes depuis le 1970-01-01 00:00:00 UTC (sans les secondes intercalaires).
Date
objets?double possible de Trouver la date la plus ancienne à une liste de dates
Les cordes, il aurait travaillé avec
Date
objets 😉Juste pour ajouter quelque chose de convertir votre date en timestamp unix, et vous pouvez les utiliser
Math.min.apply
et Math.max.apply
parce que le timestamp unix est un simple entier.Les convertir en objets est un moyen de convertir les horodatages. Vous pouvez facilement obtenir un certain nombre de millisecondes depuis le 1970-01-01 00:00:00 UTC (sans les secondes intercalaires).
OriginalL'auteur You Kuper | 2012-09-12
Vous devez vous connecter pour publier un commentaire.
Si votre tableau contient
Date
objets, alors cela devrait fonctionner. Si elle contient des chaînes de caractères comme'2012-09-12 09:20'
, alors vous pouvez les trier, et d'obtenir le 1er et le dernier élément.O(n log n)
tout en min&max besoinO(2n)
. Aussi, votre méthode de tri crée deuxDate
objets dans chaque comparaison, tandis que alphanumériques tri aurait le même résultat.Tri alphanumérique ne fonctionne que si les pièces sont dans le bon ordre Y-M-D H:M:S, pas pour D/M/Y ou J/M/Y.
Oui, mais c'est exactement le format de l'OP utilise
Hmm. Pourquoi ne
[new Date('2015-01-01'), new Date('2015-03-01'), new Date('2015-02-01')].sort()
trier du plus grand au plus petit (en Chrome au moins), alors que[new Date('2015-01-01'), new Date('2015-03-01'), new Date('2015-02-01')].sort(function(a,b) { return a-b; })
sortes correctement dans l'ordre croissant?Ah, merci, ça a du sens. Trop de conversions implicites. Désolé pour la prise de ce hors sujet.
OriginalL'auteur Rocket Hazmat
Math.min
/max
compare uniquement des chiffres, pas des chaînes de caractères. Ne pas les utiliser pour représenter les dates, mais l'utilisationDate
objets - ils seront comparés par leur timestamp nombre. Encore, max/min, permet de retourner le numéro interne, de sorte que vous besoin pour convertir unDate
(voir Min/Max de dates dans un tableau?):Cependant, si vous souhaitez utiliser les cordes ou ne peut pas utiliser la recréés Jour, vous devez exécuter manuellement dans le tableau avec une boucle for, ou l'ES5.1-méthode d'itérateur
.réduire()
:Si votre code n'a pas besoin d'être efficace, vous ne pouvez trier le tableau et d'obtenir la première et la dernière valeur. Par défaut le tri alphanumérique va le faire pour votre format de date, donc c'est vraiment simple:
OriginalL'auteur Bergi
Essayez ceci:
Je l'ai trouvé sur un ancien question
OriginalL'auteur Luigi Siri
Cela devrait le faire:
Si vous devez travailler avec des chaînes, vous pouvez définir une fonction:
Et puis:
AVERTISSEMENT: Cette deuxième méthode ne fonctionnera que si toutes les chaînes date sont dans le même format, si vous avez autre format des dates dans votre tableau, vous ne pourrez pas utiliser cette fonction.
Date
objets. Il contient les chaînes de ici.vous avez raison, édité ma réponse pour bien répondre à la question
OriginalL'auteur mornaner
Est le tableau rempli avec des objets Date?
Si oui, de les comparer, de les utiliser et de les trier à l'aide de l'un des nombreux algorithmes connus.
Si pas, de recréer le tableau avec les objets Date, une pour chacun d'eux, et de faire comme je l'ai dit ci-dessus, par la commande de la matrice.
OriginalL'auteur seth