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


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

@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")

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.


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

1
Je viens de remarquer l'étiquette ruby-on-rails, donc je suppose que vous êtes heureux d'avoir besoin d'ActiveSupport :)
Jon M


1

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


0

Deviner. Cela marche:

DateTime.now.in_time_zone.midnight
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.