Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Date, Time e Numeri

Conversione di numeri in diversi formati e calcolo dei periodi temporali
Conversione di numeri in diversi formati e calcolo dei periodi temporali
Link copiato negli appunti

Il motivo per il quale trattiamo insieme questi 3 tipi di dati è perché ActiveSupport introduce numerose estensioni per la conversione di numeri in altri formati ed il modo più efficace per presentarle è partire con alcuni esempi per il calcolo di periodi temporali.

Immaginiamo di voler calcolare "1 settimana da oggi" o "4 minuti fa". Grazie ad ActiveSupport è possibile scrivere:

require '../helper'

# secondi in 1 settimana
1.week  # => 604800

# Time.now
Time.now  # => Sat Jan 31 10:22:31 +0100 2009

# 1 settimana da oggi
1.week.from_now  # => Sat Feb 07 10:22:31 +0100 2009

# 4 minuti fa
4.minutes.ago  # => Sat Jan 31 10:18:31 +0100 2009

Ma la festa non finisce qui. Curiosando il modulo CoreExtensions::Numeric::Time è possibile scoprire la lista completa delle estensioni per convertire numeri in valore temporale o numero di secondi.

require '../helper'

1.second # => 1
1.minute # => 60
1.hour   # => 3600
1.days   # => 86400
1.week   # => 604800
1.fortnight  # => 1209600

12.seconds   # => 12
12.minutes   # => 720
12.hours # => 43200
12.days  # => 1036800
12.weeks # => 7257600
12.fortnights# => 14515200

12.seconds.ago   # => Sat Jan 31 13:59:31 +0100 2009
12.minutes.ago   # => Sat Jan 31 13:47:43 +0100 2009
12.hours.ago # => Sat Jan 31 01:59:43 +0100 2009
12.days.ago  # => Mon Jan 19 13:59:43 +0100 2009
12.weeks.ago # => Sat Nov 08 13:59:43 +0100 2008
12.fortnights.ago# => Sat Aug 16 13:59:43 +0200 2008

Sempre in tema di data ed ora, anche la lista di estensioni per questi tipi di dati è molto lunga.

require '../helper'

Date.today   # => 2009-01-31
Date.tomorrow# => 2009-02-01
Date.current # => 2009-01-31

Date.today.today?# => true
Date.yesterday.today?# => false
Date.yesterday.past? # => true
Date.yesterday.future?   # => false

Time.now.months_ago(2)   # => Sun Nov 30 10:48:25 +0100 2008
Time.now.last_year   # => Thu Jan 31 10:48:25 +0100 2008
Time.now.next_year   # => Sun Jan 31 10:48:25 +0100 2010

Gli esempi dimostrano solo un piccolo spaccato di quello che è possibile ottenere con i moduli di conversione disponibili. Per approfondimenti consiglio la lettura della documentazione ufficiale.

Prima di terminare questo capitolo sui numeri spendiamo ancora due parole sul modulo Numeric::Bytes. Questi metodi permettono di eseguire calcoli e conversioni in byte. Molti utili per la manipolazione dei file... ad esempio una gestione di upload!

require '../helper'

2.kilobytes   # => 2048
3.megabytes   # => 3145728
45.bytes + 2.6.megabytes  # => 2726342.6

Ti consigliamo anche