2016-08-11 7 views
0

Schnelle Frage. Ich verwende den Helper distance_of_time_in_words, um zu überprüfen, wie viele Tage ein Objekt erstellt wurde. Das funktioniert gut, aber ich möchte nicht, dass es 24 Stunden vor dem Tag zählt, aber ich möchte, dass es "1" Tag zählt, wenn es "00:00" ist.Rails DateTime Helferlogik

zb distance_of_time_in_words ("2016-08-11 11 : 00 "," 2016-08-12 00:00 ") sollte 1 Tag sein, aber es ist 13 Stunden

Ich möchte, dass wenn es" 00:00 "passiert, sollte es als 1 Tag zählen?

+0

Beachten Sie, dass die von Ihnen vorgeschlagene Logik stark davon abhängt, in welcher Zeitzone sich der Beobachter befindet. Wenn Sie diesen Wert von Ihrem Server aus bereitstellen, besteht eine gute Chance, dass sich Ihre Besucher nicht in derselben Zeitzone befinden. (Bedenkt man, dass ... ist die benutzerdefinierte Logik und Anstrengung, die erforderlich ist, um diese willkürliche Anforderung zu erfüllen, wirklich wert?) –

+0

sehr wahr wird dies im Hinterkopf behalten ... aber wird nur mit meiner Zeitzone für jetzt arbeiten. Danke für das Hinzeigen –

Antwort

2

Sie können möglicherweise

time_ago_in_words(date_item_was_created.at_midnight) 

time_ago_in_words verwenden können Sie die ‚jetzt‘ Zeit verzichten Hinzufügen * und durch Bewegen der erstellt-at zurück bis Mitternacht, werden Sie die ein Kreuz Tag Markierung um Mitternacht. Laut der API doc, sollte es Ihnen "rund" Tage für alles über einen Tag geben, was nach dem klingt, wonach Sie suchen.

* Sie können distance_of_time_in_words weiterhin verwenden, wenn Sie nicht mit der aktuellen Uhrzeit vergleichen.

+0

oh smart smart alles was ich wirklich brauche ist die at_midnight –

0

Das ist, was du meintest, denke ich.

def distance_of_time_in_words(time1,time2) 

    d1 = Time.parse(time1.to_s).to_date.strftime("%d").to_i 
    d2 = Time.parse(time2.to_s).to_date.strftime("%d").to_i 
    seconds = Time.parse(time2.to_s)- Time.parse(time1.to_s) 
    hours = seconds/3600 

    if d2-d1 >= 1 
    return "#{(d2-d1).to_s} days" 
    else 
    return "#{hours.to_s} hours" 
    end 

end 
Verwandte Themen