IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Format de date


Sujet :

Ruby on Rails

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 135
    Par défaut Format de date
    Bonjour,

    je demande à mes utilisateur de saisir les date au format:
    jj/mm/aaaa.
    or dans la base de donnée (mysql) les dates sont stockées au format aaaa-mm-jj.

    Il faut donc faire une conversion. A quelle niveau le faite vous au niveau du controlleur ou du model. Et comment faites vous?

    D'avance merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    Pour moi la conversion aurait plutôt sa place au niveau du contrôleur. Même si dans Rails on a plutôt tendance à essayer de réduire le code du contrôleur au minimum, je trouve qu'il est plus cohérent pour un modèle de travailler dirctement avec des Date.
    Pour convertir tes dates au format jj/mm/aaaa, tu peux simplement spliter la chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Avec params[:date] = '19/02/2008'
    Date.new(*params[:date].split('/').reverse.collect(&:to_i))

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 127
    Par défaut
    J'ai écrit un article sur les dates en Ruby qui peut t'intéresser : http://www.2dconcept.com/ruby-dates.html
    Voir la méthode parse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut Quelques éclaircissements svp
    Bonjour,

    J'ai suivi quelques directives indiquées là

    Citation Envoyé par Mookie Voir le message
    J'ai écrit un article sur les dates en Ruby qui peut t'intéresser : http://www.2dconcept.com/ruby-dates.html
    Voir la méthode parse.
    et ça m'embrouille complètement

    En incluant ceci dans une vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <%
    today = Date.today
    tomorrow = today + 1.day
    %>
    <br />
    <%= tomorrow %>
    J'obtiens ça: 2245-06-21

    J'essaie de comprendre avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <%= today %>
    <%= today.class %>
    <br />
    <%= 1.day %>
    <%= today.class %>
    qui me retourne

    2008-11-30 Date
    86400 Fixnum

    J'en déduis que la méthode .day renvoie le nombre de secondes dans une journée, et que l'addition d'un entier à une date est interprètée comme un ajout de jours entiers.

    Je suppose donc que

    tomorrow = today + 1.day

    est fautif, et qu'on obtient le résultat souhaité plus simplement avec

    tomorrow = today + 1

    Quelle serait alors la meilleure façon de tirer parti des méthodes .month, .year, etc dans de tels calculs, où l'on souhaite obtenir une date avec un décalage de n mois, années, etc.

    Merci d'avance,

    G.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    Si tu veux tester, je te conseille d'utiliser script/console, c'est quand même plus pratique que de bidouiller une vue et de rafraichir son navigateur...

    D'autre part, relis ce que tu postes, par exemple dans ton deuxième code "today.class" n'a aucune raison de changer entre la 1ère et la 2è ligne, je pense qu'il y a une incohérence entre le code que tu as posté et le résultat que tu as collé


    J'en déduis que la méthode .day renvoie le nombre de secondes dans une journée
    Non, ça renvoie un objet Duration, cf. http://api.rubyonrails.org/classes/A...eric/Time.html
    (et aussi la méthode from_now/since pour ton cas).
    Bizarrement, on dirait que cet objet essaye de se faire passer pour un Fixnum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >> d = 5.days
    => 5 days
    >> d.class
    => Fixnum
    >> d.is_a?(ActiveSupport::Duration)
    => true
    >> 42.is_a?(ActiveSupport::Duration)
    => false
    et que l'addition d'un entier à une date est interprètée comme un ajout de jours entiers.
    Correct également, mais Rails contourne ça en redéfinissant + pour les objets duration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> today = Date.today
    => Mon, 01 Dec 2008
    >> tomorrow = today + 1.day
    => Tue, 02 Dec 2008

    Donc j'ai un peu du mal à voir comment tu obtiens le résultat que tu donnes. A tout hasard, quelles sont tes versions de Ruby et Rails ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ ruby -v
    ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
    $ rails -v
    Rails 2.2.0

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Citation Envoyé par Taum Voir le message
    Si tu veux tester, je te conseille d'utiliser script/console, c'est quand même plus pratique que de bidouiller une vue et de rafraichir son navigateur...
    Effectivement, merci pour l'astuce.

    D'autre part, relis ce que tu postes, par exemple dans ton deuxième code "today.class" n'a aucune raison de changer entre la 1ère et la 2è ligne, je pense qu'il y a une incohérence entre le code que tu as posté et le résultat que tu as collé
    C'est bien une erreur de copé-collé, le code était en toute logique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <%= today %>
    <%= today.class %>
    <br />
    <%= 1.day %>
    <%= 1.day.class %>
    Merci pour tes éclaircissements concernant la classe duration, je vais me
    documenter, mais je confirme que chez moi, le résultat est erroné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    gv@spirou:~/travaux/ruby/Activites$ script/console
    Loading development environment.
    >> today = Date.today
    => #<Date: 4909603/2,0,2299161>
    >> tomorrow = today + 1.day
    => #<Date: 5082403/2,0,2299161>
    >> puts today
    2008-12-01
    => nil
    >> puts tomorrow
    2245-06-22
    => nil
    >> exit
    A tout hasard, quelles sont tes versions de Ruby et Rails ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ ruby -v
    ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
    $ rails -v
    Rails 2.2.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    gv@spirou$ ruby -v
     
    ruby 1.8.5 (2006-08-25) [i486-linux]
     
    gv@spirou$ rails -v
     
    getopt: option invalide -- v
     
    Terminating...
     
    gv@spirou$ dpkg -l "rails*"
    ||/ Nom            Version        Description
     
    +++-==============-==============-============================================
     
    ii  rails          1.1.6-3        MVC ruby based framework geared for web appl
    C'est sur une debian stable. via l'installation "normale" de paquets, je ne me suis pas cassé la tête...

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Ta version a plus de 2 ans

    Installe RubyGems puis utilise le pour installer Rails 2.2, tout devrait rentrer dans l'ordre

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo