2010-06-21 13 views
14

devo fare una semplice differenza tra due date:Come valutare una differenza di data in anni, mesi e giorni (rubino)?

Date.parse("2009-06-20") - Date.today 

Questo mi dà la differenza delle date in giorni.

Qualcuno sa un modo per convertire facilmente che al seguente formato:

The event occurred X years, Y months and Z days ago 

Grazie.

+0

typo? Y mesi? – ghoppe

+0

possibile duplicato di [Più precisione distance_of_time_in_words] (http://stackoverflow.com/questions/1224613/more-precise-distance-of-time-in-words) –

risposta

5

potrebbe essere alla ricerca per distance_of_times_in_words

+1

Buona risposta, ma questo è specifico di Ruby-on-Rails. Il poster dovrà estrarre quel codice in un programma di rubino puro. (Non ha menzionato Rails, quindi presumo che sia una domanda specifica per non-rail.) – ghoppe

+0

Il mio male, sto usando ruby-on-rails – robertokl

+0

Va bene, ma ho bisogno di qualcosa di più preciso. Conosci qualche altro modo? – robertokl

0

Non so di qualsiasi standard, modo corretto di fare questo. Per quanto possa sembrare strano, la libreria standard di Ruby ha una classe Date ma nessuna funzionalità DateSpan. Rails ha una soluzione, ma mi sembra un po 'un problema per me richiedere questo intero mammut per un compito così banale.

1

Questo è un esempio di differenza in giorni, ore, secondi. Aggiungi i campi che ti servono.

def calculate_difference 
    minutes = (Date.parse("2009-06-20") - Date.today).to_i/60 
    days = minutes/(24*60) 
    minutes -= days * 24*60 
    hours = minutes/60 
    minutes -= hours * 60 
    "#{days}d#{hours}h#{minutes}m" 
end 
+0

non così bello =/ –

+0

sì .. Mi piacerebbe calcolare anche i mesi e gli anni .. – robertokl

+1

Il problema inizia esattamente con le falene, perché ci sono mesi con 28, 30 e 31 giorni .. – robertokl

3

C'è una rubygem che restituisce Differenza di tempo in un hash come {: anno = > 0,: mese => 0, ...}

Il collegamento è: https://rubygems.org/gems/time_diff

+1

La tua gemma sembra buona, ma penso che dovresti lavorarci sopra. Dovresti aggiungere del testo e una formattazione. Mantenere il buon lavoro. – robertokl

+0

Grazie. Certo che migliorerò la mia gemma. – abhidsm

Problemi correlati