Itérer tous les mois avec la date d'objets
J'ai donc deux rubis Date d'objets, et je tiens à réitérer tous les mois. Par exemple si j'ai de la Date.nouvelle(2008, 12) et la Date.neuf(2009, 3), il cède-moi 2008-12, 2009-1, 2009-2, 2009-3 (comme les objets Date bien sûr). J'ai essayé à l'aide de gamme, mais il donne chaque jour. J'ai vu étape, la méthode de Date cependant il ne permet moi de passer le nombre de jours (et chaque mois a un nombre différent de ceux-ci). Quelqu'un a des idées?
Vous devez vous connecter pour publier un commentaire.
J'ai ajouté méthode suivante à la classe Date:
Vous l'utilisez comme:
Ok, donc, plus de rubyish approche à mon humble avis pourrait être quelque chose le long de:
et
Mais vous devez faire attention à utiliser les premiers jours du mois (ou de mettre en œuvre une telle logique en Mois)...
Ici est quelque chose de très Ruby:
premier jour de chaque mois
Il vous donnera un tableau de la première journée de chaque mois au sein de la gamme.
dernier jour de chaque mois
Il suffit de noter que la date de fin doit être le mois après la fin de votre gamme.
Je trouve que j'ai besoin de le faire parfois, lors de la génération de listes de sélection de mois. La clé est la
>>
de l'opérateur sur la Date, qui s'avance de la Date de l'avant un mois.Bien sûr, vous pouvez mettre en forme les résultats cependant vous aimez dans la boucle.
Sera de retour le nom du mois et de l'année ("Mars 2009"), au lieu de l'objet Date. Notez que la Date d'objets retournés sera mis sur le 1er du mois.
Date#>>
Je suis venu avec la solution suivante. C'est un mixin pour les plages de dates qui ajoute un itérateur pour les deux années et des mois. Elle rapporte des sous-gammes de la gamme complète.
Vous donnera:
Vous pouvez utiliser tous les Énumérable méthodes si vous utilisez cette classe iterator. Je le fais de gérer les chaînes de trop, de sorte qu'il peut prendre la forme d'entrées.
Vous donnera une représentation de chaîne de chaque mois, y compris il l'année.
Comme une méthode d'aide:
Utilisation:
Ou, si vous préférez monkey patch Date:
Utilisation: