J'ai un tableau d'événements et je veux les diviser en un tableau bidimensionnel basé sur event_date (qui retourne un objet Time). Mais je veux que ce soit une partie de la date. Voici ce que j'ai jusqu'à présent:Quelle est la meilleure façon de trier par date?
def divide_events_by_day(events)
# Sort, so we can start with the first day.
events = events.sort { |x,y| x.event_date <=> y.event_date }
days = []
current_date = events[0].event_date # A Time object.
# With meaningful hours and minutes.
while events.length > 0 do
# Find events for the current date.
day_events = events.select { |e|
(e.event_date.year == current_date.year) &&
(e.event_date.yday == current_date.yday)
}
# Move them to their subarray.
days << day_events
events = events - day_events
# Advance the current_date by one day.
current_date = (current_date + (60 * 60 * 24))
end
days
end
Des suggestions pour le rendre plus simple ou plus rapide?
meilleure approche que la mienne , devrait être ==, aussi ne vous devez pas ajouter le code à la répartition par jour de l'année ... –
Date Heure # date est juste la partie entière. Hmmm. Ce n'est pas en pioche, mais ça marche pour moi. Je me demande si cela fait partie d'une extension que j'ai chargée, ou standard mais plus récente que mon livre d'arbre mort ... – MarkusQ
@ sambo99 Merci d'avoir attrapé ceux-ci; Je suis multitâche et être un peu négligé sur les tâches secondaires. J'ai appliqué les corrections et vous donne crédit dans le changelog. – MarkusQ