Forum: Rails France Parsing des dates françaises

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8639490687baf46529ee5d58370907f3?d=identicon&s=25 Emmanuel Bouton (Guest)
on 2008-11-18 02:20
(Received via mailing list)
Salut à tous,

Je n'arrive pas à trouver un moyen pour que rails parse des dates au
format
européen.
En fait je voudrais que "22/12/2008".to_date me renvoie bien le 22
décembre
2008.

Une idée ?
Merci

Emmanuel
D893e113b51a8f200d2abb3ed9e54143?d=identicon&s=25 Gaspard Bucher (gazoduc)
on 2008-11-18 07:58
(Received via mailing list)
> Salut à tous,
>
> Je n'arrive pas à trouver un moyen pour que rails parse des dates au format
> européen.
> En fait je voudrais que "22/12/2008".to_date me renvoie bien le 22 décembre
> 2008.
>
> Une idée ?
> Merci
>
Voici la solution utilisée par zena:
http://github.com/zena/zena/tree/59dac1392647c1a50...

"22/12/2008".to_utc("%d/%m/%Y")

Gaspard
521119bc541d7facd44e19a59a7e421e?d=identicon&s=25 Salim (Guest)
on 2008-11-18 10:16
(Received via mailing list)
Tu peux essayer ceci :

Date.parse("2008-12-22")

Salim
8639490687baf46529ee5d58370907f3?d=identicon&s=25 Emmanuel Bouton (Guest)
on 2008-11-18 22:02
(Received via mailing list)
Merci pour la réponse.
En fait je me rend compte que j'ai mal expliqué mon problème, désolé.
Ce que je voudrais, c'est que dans un form_for, mes champs de type date
soient saisies au format jj/mm/aaaa (via un datepicker javascript), et
que
rails les interprète correctement. J'ai l'impression qu'il doit falloir
surcharger la fonction _parse de ruby (format.rb) car elle est appelée
par
le to_date de ActiveSupport (et to_datetime également) ... mais bon ça
me
parait un peu trash, et je me dis que rails avait peut être déjà prévu
le
coup ???

Merci
a+

Manu

Le 18 novembre 2008 07:58, Gaspard Bucher <gaspard@teti.ch> a écrit :
D893e113b51a8f200d2abb3ed9e54143?d=identicon&s=25 Gaspard Bucher (gazoduc)
on 2008-11-18 22:53
(Received via mailing list)
Dans ton contrôleur qui reçoit les données, tu transformes les dates
avant de les envoyer dans le modèle avec une méthode genre "to_utc"
comme
http://github.com/zena/zena/tree/59dac1392647c1a50...

par exemple:

params[:page][:date] = params[:page][:date].to_utc("%d/%m/%Y")
Page.create(params[:page])

gaspard
2008/11/18 Emmanuel Bouton <goten4@gmail.com>:
8639490687baf46529ee5d58370907f3?d=identicon&s=25 Emmanuel Bouton (Guest)
on 2008-11-19 00:27
(Received via mailing list)
Excellent ... Merci !

En fait, je n'ai pas vraiment procédé comme tu me l'as décris mais tu
m'as
mis sur la voie (j'espère que c'est la bonne ...).

Pour la fonction to_utc, j'ai mis plutôt celle-ci :

# config/initializers/string.rb
class String
  def to_utc(format)
    Date.strptime(self,
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS[format]).to_s(:utc)
  rescue
    self
  end
end

# config/initializers/date_formats.rb
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
  :european => '%d/%m/%Y'
)

Ta fonction to_utc est-elle plus performante (et/ou plus propre) ?

Ensuite j'ai ajouté à mon model un attribut "alternatif" pour ma date :

# my_model.rb
class MyModel < ActiveRecord::Base
  def ends_at_formatted
    self.ends_at.strftime
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS[:european]
unless self.ends_at.blank?
  end

  def ends_at_formatted=(value)
    self.ends_at = value.to_utc(:european)
  end
end

Du coup j'utilise cet attribut au lieu de la vrai date dans ma vue et ça
marche nickel.

Merci encore
a+

Emmanuel


Le 18 novembre 2008 22:53, Gaspard Bucher <gaspard@teti.ch> a écrit :
D893e113b51a8f200d2abb3ed9e54143?d=identicon&s=25 Gaspard Bucher (gazoduc)
on 2008-11-19 07:37
(Received via mailing list)
Ma fonction permet de parser les heures (datetime).

2008/11/19 Emmanuel Bouton <goten4@gmail.com>:
This topic is locked and can not be replied to.