Rails DateTime.now sem tempo

90

Preciso usar DateTime.now para pegar a data atual e "retirar" a hora.

Por exemplo, isso mostra o que eu não quero:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Isso mostra o que eu fazer deseja:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC

Mike
fonte
10
DateTime sem Time é Date :) você quer dizer Date.today?
ajahongir de

Respostas:

173

Você pode usar um dos seguintes:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date
Igor Kapkov
fonte
@sekmo begin_of_day faz parte do suporte ativo (trilhos).
Igor Kapkov
3
Melhor não usar DateTime.nowsem zona. É melhor usar um dos 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_fem vez disso.
Bryan Dimas
obrigado @BryanDimas, seu comentário ajuda. A VPN pode afetar, se chaking ip para outros países?
Jenuel Ganawed
19

O que você precisa é da função strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")
VP.
fonte
Isso pode causar problemas significativos se você estiver inserindo dados em um banco de dados que espera %Y-%m-%d %H:%M:%Sdados formatados, pois inverterá o valor do mês e do dia
quetzaluz
Minha proposta era usar a função strftime, o formato usado você tem que se customizar de acordo
VP.
9

Sobre o quê Date.today.to_time?

Ernesto
fonte
4

Se quiser require 'active_support/core_ext', você pode usar

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800
Jon M
fonte
1
Acabei de notar a tag ruby-on-rails, então acho que você está feliz em exigir o ActiveSupport :)
Jon M
2

Você pode usar apenas:

Date.current
Evan Ross
fonte
1

Se você quiser a data de hoje sem a hora, basta usar Date.today

LordKiz
fonte
0

Descobri isso. Isso funciona:

DateTime.now.in_time_zone.midnight
Mike
fonte