J'ai un tas d'objets, chacun ayant un horodatage, que je veux grouper par date, dans un objet JSON. Le but ultime est quelque chose comme ceci:
myObject = { "06/07/2012" : [ { "timestamp" : "07/06/2012 13:30", ... }, { "timestamp" : "07/06/2012 14:00", ... } ], "07/07/2012 [...] }
Pour obtenir la date, je teste chaque objet Timestamp et utilise:
var visitDate = new Date(parseInt(item.timestamp, 10)); visitDate.setHours(0); visitDate.setMinutes(0); visitDate.setSeconds(0);
.. alors je l'utilise pour stocker comme un nom pour l'objet JSON. Il semble désordonné, et je suis sûr qu'il devrait y avoir une façon plus facile de faire les choses.
Des conseils / suggestions bienvenus!
Que diriez-vous de .toDateString()
?
Sinon, utilisez .getDate()
, .getMonth()
et .getYear()
?
Dans mon esprit, si vous souhaitez regrouper les choses par date, vous souhaitez simplement accéder à la date, ne pas la configurer. En ayant une certaine façon d'accéder au champ Date, vous pouvez les comparer et les regrouper, non?
Découvrez toutes les méthodes de date amusantes ici: MDN Docs
Modifier: Si vous souhaitez le conserver comme objet de date, procédez comme suit:
var newDate = new Date(oldDate.toDateString());
Le constructeur de la date est assez intelligent à propos de l'analyse des chaînes (mais pas sans une quantité de mises en garde, mais cela devrait fonctionner de manière assez cohérente), donc prendre l'ancienne Date et l'imprimer uniquement à la date sans délai entraînera le même effet que vous avez Poste original.
Si cela ne vous dérange pas de créer un objet de date supplémentaire, vous pouvez essayer:
var tempDate = new Date(parseInt(item.timestamp, 10)); var visitDate = new Date (tempDate.getUTCFullYear(), tempDate.getUTCMonth(), tempDate.getUTCDate());
Je fais quelque chose de très similaire pour obtenir une date du mois en cours sans le temps.