distance_of_time_in_words_to_now 不准确

distance_of_time_in_words_to_now not accurate

所以,也许我做错了,但在 rails 3.2.19 中,我得到了这个结果:

irb(main):009:0> include ActionView::Helpers::DateHelper
=> Object
irb(main):009:0> distance_of_time_in_words_to_now(DateTime.now + 1.day)
=> "1 day"
irb(main):010:0> distance_of_time_in_words_to_now(DateTime.now + 1.month)
=> "about 1 month"
irb(main):011:0> distance_of_time_in_words_to_now(DateTime.now + 2.month)
=> "about 1 month"
irb(main):012:0> distance_of_time_in_words_to_now(DateTime.now + 3.month)
=> "3 months"

为什么添加 2 个月显示 about 1 month

或者,谁能建议更准确的自然语言日期 gem 或方法?

解决方案:

我想我的老版本 rails 就是问题所在。所以,我使用了 chronic_duration gem 并以这个小片段结束:

opt = { weeks: true, units: 2, joiner: ' and ' }.merge!(options)
ChronicDuration.output((date_time.to_datetime - DateTime.now).to_i * 24 * 60 * 60, opt)

产生

"2 mos and 3 days"

这对我来说很好。

[11] pry(main)> include ActionView::Helpers::DateHelper
=> Object

[12] pry(main)> distance_of_time_in_words_to_now(DateTime.now + 1.day)
=> "1 day"

[13] pry(main)> distance_of_time_in_words_to_now(DateTime.now + 1.month)
=> "about 1 month"

[14] pry(main)> distance_of_time_in_words_to_now(DateTime.now + 2.month)
=> "about 2 months"

[15] pry(main)> distance_of_time_in_words_to_now(DateTime.now + 3.month)
=> "3 months"

您使用的 rails 是什么版本?也许这是一个已修复的错误。我是 运行 4.2 测试版。