# Date e valuta in italiano

**URL:** <https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251>\
**Category:** IT\
**Created:** [April 25, 2012, 1:20pm UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251 "2012-04-25T13:20:33Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gurdipe\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b77776/32.png) [@Gurdipe\_D](https://www.ruby-forum.com/u/Gurdipe_D)\
**Post date:** [April 25, 2012, 1:20pm UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/1 "2012-04-25T13:20:33Z")

</div>

Ho un form con campi per l’inserimento di date e valori rappresentanti  
euro.  
L’inserimento delle date lo faccio in un campo di tipo string e  
utilizzo jquery-ui, mi visualizza il calendario attraverso il quale  
l’utente seleziona la data.  
Al momento della selezione nel campo viene inserito ad esempio,  
24/04/2012.  
Nel db viene memorizzato 2012-04-24 ed e’ questa stessa  
rappresentazione che vedo nel capo string quando richiamo il form, ad  
esempio per una modifica.  
Vorrei che l’utente non si ritrovasse 2012-04-24 ma 24/04/2012 o  
24-04-2012, insomma la data in formato italiano.  
Anche per i valori rappresentanti euro l’utente e’ costretto ad  
inserire i dati separando i centesimi con il punto anziche’ con la  
virgola, e’ corretto perche’ tali valori sono indicati come decimal ma  
per l’utente e’ piu’ normale separare i decimali utilizzando la  
virgola.  
L’unico modo sarebbe quello di intercettare i valori e convertirli in  
qualche modo?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 25, 2012, 8:51pm UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/2 "2012-04-25T20:51:36Z")

</div>

Il 25/04/12 13:19, Mauro ha scritto:

> Anche per i valori rappresentanti euro l’utente e’ costretto ad  
> inserire i dati separando i centesimi con il punto anziche’ con la  
> virgola, e’ corretto perche’ tali valori sono indicati come decimal ma  
> per l’utente e’ piu’ normale separare i decimali utilizzando la  
> virgola.  
> L’unico modo sarebbe quello di intercettare i valori e convertirli in  
> qualche modo?

Stai parlando di Rails?  
Per le date puoi usare la \<%=l MyModel.date %\>, dai un’occhiata qui:

> **[3.5. Adding Date/Time Formats - Internationalization (I18n) — Ruby on Rails...](https://guides.rubyonrails.org/i18n.html#adding-date-time-formats)**
>
> Internationalization (I18n) is the process of preparing your application to support multiple languages and regional formats. In practice, this usually means abstracting strings and other locale-specific elements, such as date or currency formats, out...

In generale I18n quello che ti serve

Per la moneta esiste il metodo number\_to\_currency

> **[number\_to\_currency(number, options = {}) Link -...](https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency)**
>
> Delegates to ActiveSupport::NumberHelper#number\_to\_currency. | Action View Number Helpers Provides methods for converting numbers into formatted strings.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 26, 2012, 12:18am UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/3 "2012-04-26T00:18:39Z")

</div>

2012/4/25 Tommaso V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > rappresentazione che vedo nel capo string quando richiamo il form, ad
> 
> Stai parlando di Rails?  
> Per le date puoi usare la \<%=l MyModel.date %\>, dai un’occhiata qui:  
> [Internationalization (I18n) — Ruby on Rails Guides](http://guides.rubyonrails.org/i18n.html#adding-date-time-formats)  
> In generale I18n quello che ti serve
> 
> Per la moneta esiste il metodo number\_to\_currency

> **[number\_to\_currency(number, options = {}) Link -...](https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency)**
>
> Delegates to ActiveSupport::NumberHelper#number\_to\_currency. | Action View Number Helpers Provides methods for converting numbers into formatted strings.

Si lo so, ma supponi di avere un campo in un form dove l’utente deve  
inserire un valore corrispondente alla valuta 1.000.022,12 euro.  
L’utente e’ costretto ad inserire 1000022.12, mentre si aspetta di  
poter inserire 1000022,12.  
Poi certo, il valore lo formatto con l’helper number\_to\_currency in  
fase di visualizzazione.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 26, 2012, 9:55am UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/4 "2012-04-26T09:55:10Z")

</div>

2012/4/26 Alessio C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > poter inserire 1000022,12.  
> > to\_write = raw  
> > end
> 
> Se usi una colonna decimal non ti serve di moltiplicare e dividere per 100.  
> Ricordati di mettere comunque un validatore sul campo.

Si vedo che fai una gsub, cosi’ avevo pensato io, la mia richiesta era  
volta a capire se ci fosse qualche soluzione piu’ immediata sia per il  
problema della valuta sia per quello delle date se uso campi string e  
non l’helper date\_select.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 26, 2012, 9:18am UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/5 "2012-04-26T09:18:35Z")

</div>

> poter inserire 1000022,12.  
> Poi certo, il valore lo formatto con l’helper number\_to\_currency in  
> fase di visualizzazione.

Non so se esiste un metodo rapido per farlo, io avevo un’applicazione in  
cui dovevo tenere dei prezzi su DB in formato intero (in centesimi) ma  
mostrarli all’utente come euro e con la virgola.

class Item \< ActiveRecord::Base  
PRICE\_REGEXP = /^\d+(.\d{1,2})?$/

def price=(value)  
raw = value.to\_s.gsub(‘,’,‘.’).strip  
to\_write = raw  
if raw =~ PRICE\_REGEXP  
to\_write = (raw.to\_f \* 100).to\_i  
end  
write\_attribute(:price, to\_write)  
end

def price  
p = read\_attribute(:price)  
sprintf(“%.2f”, p/100.0).gsub(‘.’, ‘,’) unless p.nil?  
end  
end

Se usi una colonna decimal non ti serve di moltiplicare e dividere per  
100. Ricordati di mettere comunque un validatore sul campo.

## Alessio

Alessio “nolith” Caiazza  
il sapere umano appartiene al mondo.  
GPG 440C5437

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [April 26, 2012, 9:58am UTC](https://www.ruby-forum.com/t/date-e-valuta-in-italiano/219251/6 "2012-04-26T09:58:17Z")

</div>

On Thu, Apr 26, 2012 at 9:17 AM, Alessio C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > poter inserire 1000022,12.
> 
> 1. Ricordati di mettere comunque un validatore sul campo.

Scusate, segnalo anche questa gemma che pu forse tornare utile

[http://money.rubyforge.org/](http://money.rubyforge.org/)

## – Riccardo

L’esperienza quello che ottieni quando, non ottieni quello che  
desideri.
