Manipolazione date

Ciao Raga.

Come si possono validare le date … mi spiego meglio nel model voglio
che una data sia successiva ad un altra.
E vorrei anche controllare che la data esista! :wink:

Help.

Non sono sicuro di aver capito.
Hai una data (oggetto Date? o stringa? input dell’utente?) e vuoi
calcolare quella successiva?

d = Date.today

next_day = d+1

next_day.to_s
=> “2007-06-08”

:slight_smile:

David P. wrote:

Non sono sicuro di aver capito.
Hai una data (oggetto Date? o stringa? input dell’utente?) e vuoi
calcolare quella successiva?

d = Date.today

next_day = d+1

next_day.to_s
=> “2007-06-08”

:slight_smile:

Ok, mi spiego meglio.
Ti faccio un esempio stò facendo un pannello di amministrazione e da
form vengono inserite 2 date (quindi menù tendina per giorno mese e
anno) inizio e fine.
Voglio verificare che la data sia corretta (tipo voglio un errore per il
30 febbraio) e poi voglio verificare che

data fine > data inizio

Ok. La comparazione è facile. Da IRB:

d1 = Date.today
=> #<Date: 4908517/2,0,2299161>
d2 = 3.weeks.ago.to_date
=> #<Date: 4908475/2,0,2299161>
d1
=> #<Date: 4908517/2,0,2299161>
d1.to_s
=> “2007-06-07”
d2.to_s
=> “2007-05-17”
d1 > d2
=> true
d2 > d1
=> false

La validità .
Vorrai forse usare Date#valid_civil?, descritto qui:
http://www.ruby-doc.org/core/classes/Date.html#M000648

C’è anche un plugin che potrebbe venirti utile qui:
http://www.railsonwave.com/railsonwave/2006/12/13/howto-validate-date-format-in-ruby-on-rails

Ma rammentami: quando la data ti viene dal form, che tipo di oggetto è?
Una stringa tipo “2007-06-06”?

Time ha un metodo “parse” che fa questa cosa buffa:

Time.parse(“2007-02-30”)
=> Fri Mar 02 00:00:00 +0100 2007

Vabbè, ti tocca leggere un po’ e fare delle prove! IRB è tuo amico,
rammentalo!

d1 > d2
=> true

d2 > d1
=> false

Grazie mille è + facile a dirsi che a farsi … i form del rail
restituiscono la data formattata correttamente e si possono fare le
comparazioni.

ora … SEMPRE + DIFFICILE

ho visto i link che mi hai consigliato, ma non ho capito come si
inseriscono le librerie di gestione delle date.

Premetto che sono nuovo di Ruby. Se stai utilizzando Rails perché non
sfrutti javascript?