Comment puis-je compter le nombre de jours entre ces deux dates ?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Comment puis-je compter le nombre de jours entre ces deux dates ?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Oui, mais l'utilisateur a des chaînes de caractères et vous ne pouvez pas faire ça avec des chaînes de caractères. Vous en avez besoin en tant que dates. Voir ma réponse pour ajouter to_date à partir des extensions de base.
@MichaelDurrant Vous faites une supposition injustifiée. L'utilisateur ne précise pas s'il s'agit de chaînes de caractères ou non. En fait, puisqu'il utilise Rails, il est très probable que les dates proviennent d'ActiveRecord, qui les convertit automatiquement en objets date. Le texte donné est également identique à la représentation de l'objet Date, ce qui rend très probable le fait qu'il provienne d'une source native.
Correct, je suppose que l'utilisateur a essayé a - b et que cela n'a pas fonctionné et qu'il a fini par poster sur SO. Je suppose que seul andkjaer peut nous dire ce qu'il en est vraiment :)
S'il s'agit de champs de tableau, cette réponse est la bonne, au lieu de la réponse la plus cotée ici.
Ne fonctionne pas pour (Time.zone.now.to_date - 23.hours.ago.to_date).to_i
il donne 1 et devrait être 0
@YuriGhensev, cela dépend du moment où vous exécutez votre code d'exemple, par exemple maintenant Time.zone.now.to_date
renvoie "Wed, 15 Nov 2017", alors que 23.hours.ago.to_date
retourne "Tue, 14 Nov 2017". La différence en nombre de jours est et devrait être de 1, sauf si vous avez exécuté votre code dans l'heure précédant minuit.
Rails possède des fonctions intégrées aides qui pourrait résoudre ce problème pour vous. Une chose à garder à l'esprit est que cela fait partie des aides d'Actionview, donc elles ne seront pas disponibles directement depuis la console.
Essayez ceci
<% start_time = "2012-03-02 14:46:21 +0100" %>
<% end_time = "2012-04-02 14:46:21 +0200" %>
<%= distance_of_time_in_words(start_time, end_time) %>
"about 1 month"
@MaayanNaveh il ne devrait pas l'être lorsque vous avez besoin du nombre réel pour les calculs.
Cette question est l'un de ces cas où il vaut mieux poser la question elle-même différemment. Si vous suivez les autres réponses données ici, vous rencontrerez des cas où vous voudrez parfois afficher des semaines ou des années au lieu de jours. Ceci devrait être accepté comme la "bonne" réponse Rails.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.