# Manipolazione date

**URL:** <https://www.ruby-forum.com/t/manipolazione-date/106192>\
**Category:** IT\
**Created:** [June 7, 2007, 10:51am UTC](https://www.ruby-forum.com/t/manipolazione-date/106192 "2007-06-07T10:51:04Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 10:51am UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/1 "2007-06-07T10:51:04Z")

</div>

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! 😉

Help.

---

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 11:16am UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/2 "2007-06-07T11:16:49Z")

</div>

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”

🙂

---

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 11:34am UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/3 "2007-06-07T11:34:57Z")

</div>

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”
> 
> 🙂

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

---

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 11:50am UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/4 "2007-06-07T11:50:53Z")

</div>

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](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](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!

---

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 7:12pm UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/5 "2007-06-07T19:12:06Z")

</div>

> > > 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.

---

<div class="post-metadata">

**Author:** ![rogero83](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@rogero83](https://www.ruby-forum.com/u/rogero83)\
**Post date:** [June 7, 2007, 12:03pm UTC](https://www.ruby-forum.com/t/manipolazione-date/106192/6 "2007-06-07T12:03:22Z")

</div>

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