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.