Est-ce que Time.zone.now.to_date
équivaut à Date.today
? Une autre façon de le mettre: sera Time.zone.now.to_date == Date.today
toujours true
? Si ce n'est pas le cas, quel est le meilleur moyen d'obtenir un objet Date correspondant à "maintenant" dans le fuseau horaire de l'application?Time.zone.now.to_date est-il équivalent à Date.today?
Répondre
Ils ne sont pas toujours les mêmes. Time.zone.now.to_date utilisera le fuseau horaire des applications, tandis que Date.today utilisera le fuseau horaire des serveurs. Donc, si les deux mentent à des dates différentes, ils seront différents. Un exemple de la console:
ruby-1.9.2-p290 :036 > Time.zone = "Sydney"
=> "Sydney"
ruby-1.9.2-p290 :037 > Time.zone.now.to_date
=> Wed, 21 Sep 2011
ruby-1.9.2-p290 :038 > Date.today
=> Tue, 20 Sep 2011
Méfiez-vous de ce problème: http://stackoverflow.com/a/27397193/115363 –
Encore plus facile: Time.zone.today
J'ai aussi écrit une petite méthode d'aide Date.today_in_zone
qui le rend vraiment facile d'obtenir un « aujourd'hui » Date
pour une zone de temps spécifique sans avoir à changementTime.zone
:
# Defaults to using Time.zone
> Date.today_in_zone
=> Fri, 26 Oct 2012
# Or specify a zone to use
> Date.today_in_zone('Sydney')
=> Sat, 27 Oct 2012
Pour l'utiliser, il suffit de jeter cela dans un fichier comme 'lib/date_extensions.rb'
et require 'date_extensions'
.
class Date
def self.today_in_zone(zone = ::Time.zone)
::Time.find_zone!(zone).today
end
end
Je pense que la meilleure façon est d'apprendre l'heure actuelle par:
Time.current
Cela vérifie automatiquement si vous avez fuseau horaire fixé il appellera Time.zone.now, mais si vous n'avez pas, il appellera juste Time.now.
Aussi, ne pas oublier de définir votre fuseau horaire dans application.rb
# system timezone
Time.now.to_date == Date.today
# application timezone
Time.zone.now.to_date == Time.current.to_date == Time.zone.today == Date.current
http://edgeapi.rubyonrails.org/classes/Time.html#method-c-current http://edgeapi.rubyonrails.org/classes/Date.html#method-c-current
- 1. Rails Date comparée à Date.today
- 2. Est-ce un remplacement dangereux pour Date.today dans Ruby (on Rails)? (Fuseau horaire)
- 3. Pourquoi Date.today ne fonctionne pas sur la console Ruby (irb)?
- 4. WPF équivalent à ActiveControl?
- 5. GTK + équivalent à QDockWdiget
- 6. Java "équivalent" à CSLA
- 7. QT équivalent à JSplitPane
- 8. Java équivalent à pyftpdlib?
- 9. Équivalent à JDIC?
- 10. Java équivalent à WPF
- 11. MSVC équivalent à '__builtin_return_address'
- 12. Erlang équivalent à sinon
- 13. Java équivalent à
- 14. Lua équivalent à shlex?
- 15. MSVC équivalent à __builtin_popcount?
- 16. WPF équivalent à TextRenderer
- 17. Équivalent à imshow à Clojure?
- 18. PHP à ASP.NET - call_user_func() équivalent?
- 19. C# C équivalent à l'union
- 20. équivalent à firebug dans IE
- 21. SQLAlchemy équivalent à la méthode
- 22. Google équivalent à Yahoo Placemaker
- 23. Java équivalent à .NET System.Net.ServicePointManager
- 24. Python équivalent à Java Class.getResource
- 25. activerecord équivalent à SQL 'minus'
- 26. Lua équivalent à Python dis()?
- 27. Java équivalent à .NET System.InvalidOperationException
- 28. GTK équivalent à BackgroundWorker (MonoDevelop)
- 29. SQL Server équivalent à DBMS_METADATA.GET_DDL
- 30. Python équivalent à atoi/atof
Ceci est une excellente référence pour les dates et heures pour éviter fuseau horaire gotchas: http: //danilenko.org/2012/7/7/6/rails_timezones/ – Matt
La manière correcte est la suivante: http://stackoverflow.com/a/27397193/115363 –