Tutoriaux
Site
TutoriauxSite
|
Ruby on Rails : La gestion des dates en Rubyposté par Anthony Heukmes le 09-02-2008
Gestion des dates en RubyLa première force du framework Ruby on Rails (RoR) est qu'il est basé sur ce merveilleux langage qu'est Ruby. Cependant, trop de gens plongent directement dans rails sans prendre la peine d'étudier Ruby un peu plus en profondeur... Une bonne connaissance du langage vous permettra pourtant d'améliorer la qualité de vos applications web. J'ai souvent trouvé la gestion des dates assez fastidieuses avec les différents langages que j'ai utilisés. Mais c'était avant de connaître Ruby! Je vais vous présenter dans cet article différentes astuces permettant de travailler agréablement et efficacement avec les dates dans vos différents controllers/helpers/views. La date du jour, svp! Et pourquoi pas la date avec l'heure également?
>> Time.now
=> Sat Feb 09 17:14:37 +0100 2008 >> Date.today => Sat, 09 Feb 2008 Ok c'est bien beau, mais je vais pas afficher ça dans une vue, on est pas en Amérique ici! Pas de problème, la méthode strftime est faite pour vous! Pourquoi ne pas ajouter une méthode format_date dans votre application helper?
def format_date(date)
format = '%d-%m-%Y %H:%M' return date.strftime(format) end; # Exemple d'appel dans une vue : format_date(Time.now) Comment je fais pour extraire le jour, ou le mois, ... de ma date?
date = Date.today
date.sec date.min date.hour date.day date.month date.year Et comment je récupère un objet Date depuis une chaîne de caractères (String)?
date = Date.parse(mon_string)
Ruby va se débrouiller pour vous créer une date, que vous lui passiez une date au format dd-mm-YYYY ou month, day, year, ou autre... Ok, c'est pas mal. Mais comment faire pour ajouter un jour, 5 jours, 3 semaines, 10 mois? ...
today = Date.today
tomorrow = today + 1.day yesterday = today - 1.day next_week = today + 1.week in_two_weeks = today + 2.weeks next_month = today + 1.month in_five_months = today + 5.months C'est pas super simple ça? Vive le Ruby! Vous avez remarqué que je différencie le singulier et le pluriel. C'est parce que je trouve que c'est plus lisible mais vous n'êtes pas obligé d'en faire autant. Today + 5 days == Today + 5.day Vous en voulez encore? Comment faire pour parcourir un ensemble de dates?
start_date = Date.today
end_date = start_date + 3.days (start_date..end_date).each do |d| logger.info d.to_s end # Affichera, dans votre fichier de log : 2008-02-09 2008-02-10 2008-02-11 C'était une introduction, j'espère que ça vous sera utile! Pour Ruby, hip hip hip? Version imprimable
Commentaires
|
||||