2011-11-19 9 views
70

Devo utilizzare DateTime.now per prendere la data corrente e "spogliare" l'ora.Rails DateTime.now senza tempo

Ad esempio, questa mostra quello che Non mancanza: DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Questo dimostra quello che faccio vogliono: DateTime.now.some_operation => 2011-11-06 00:00:00 UTC

+9

DateTime senza tempo viene data :) vuoi dire Date.today? – ajahongir

risposta

131

Prova DateTime.now.to_date o DateTime.now.beginning_of_day

+0

@sekmo beginning_of_day fa parte del supporto attivo (rails). –

+1

Meglio non usare 'DateTime.now' senza zona. È preferibile utilizzare uno dei seguenti elementi: "Time.zone.now'," DateTime.current', "DateTime.now.in_time_zone'," DateTime.now.utc', "DateTime.now.getlocal'," DateTime.now.iso8601 ',' DateTime.now.jisx0301', 'DateTime.now.rfc3339',' DateTime.now.to_i', 'DateTime.now.to_f' invece. –

0

capito. Questo funziona:

DateTime.now.in_time_zone.midnight 
15

Quello che vi serve è la funzione strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z") 
+0

Ciò può causare problemi significativi se si inseriscono dati in un database che si aspetta dati formattati '% Y-% m-% d% H:% M:% S' in quanto invertirà il valore di mese e giorno – quetzaluz

4

Se sei felice di require 'active_support/core_ext', quindi è possibile utilizzare

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800 
+1

Appena notato il rubino -on-rails tag, quindi suppongo che tu sia felice di richiedere ActiveSupport :) –

7

Che dire di Date.today.to_time?

2

Se si desidera la data odierna, senza il tempo, basta usare Date.today

2

È possibile utilizzare solo:

Date.current