Rails DateTime.now sans heure

91

J'ai besoin d'utiliser DateTime.now pour saisir la date actuelle et "supprimer" l'heure.

Par exemple, cela montre ce que je ne veux pas :DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Cela montre ce que je fais veulent:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC

Mike
la source
10
DateTime sans Time is Date :) voulez-vous dire Date.today?
ajahongir

Réponses:

173

Vous pouvez utiliser l'un des éléments suivants:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date
Igor Kapkov
la source
@sekmo begin_of_day fait partie de l'activesupport (rails).
Igor Kapkov
3
Mieux vaut ne pas utiliser DateTime.nowsans zone. Il est préférable d'utiliser l' un des 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, à la DateTime.now.to_fplace.
Bryan Dimas
merci @BryanDimas, votre commentaire aide. Le VPN peut-il affecter le changement d'IP vers d'autres pays?
Jenuel Ganawed
20

Ce dont vous avez besoin est la fonction strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")
VP.
la source
Cela peut causer des problèmes importants si vous insérez des données dans une base de données qui attend %Y-%m-%d %H:%M:%Sdes données formatées car elle inversera la valeur du mois et du jour
quetzaluz
Ma proposition était d'utiliser la fonction strftime, le format utilisé que vous devez personnaliser en conséquence
VP.
9

Et quoi Date.today.to_time?

Ernesto
la source
4

Si vous êtes d'accord require 'active_support/core_ext', vous pouvez utiliser

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800
Jon M
la source
1
Je viens de remarquer l'étiquette ruby-on-rails, donc je suppose que vous êtes heureux d'avoir besoin d'ActiveSupport :)
Jon M
2

Vous pouvez utiliser uniquement:

Date.current
Evan Ross
la source
1

Si vous voulez la date du jour sans l'heure, utilisez simplement Date.today

LordKiz
la source
0

Deviner. Cela marche:

DateTime.now.in_time_zone.midnight
Mike
la source