Joh*_*gan 9 ruby time ruby-on-rails ruby-on-rails-3
在Rails 3.0.10中
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Run Code Online (Sandbox Code Playgroud)
和
ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1
Run Code Online (Sandbox Code Playgroud)
因此,星期一在时间映射中为0,在日期映射中为1.
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/time/calculations.rb
我觉得从星期日开始,零是更安全,更常见,更有可能被别人的方式去理解.我希望了解历史/推理,以防我忽视某些事情.
我的用例:我在我的数据库中明确地存储了星期几.我认为存储为整数比存储"星期一","星期二"等更有效,更容易使用.
PS我有一个好主意做类似以下的事情.从平日字符串里面来回映射方法(隐藏整数).
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Time::DAYS_INTO_WEEK[day_of_week.downcase.to_sym]
Time::DAYS_INTO_WEEK.to_a.select{|k, v| v == start_day }.first.first.to_s.capitalize
Run Code Online (Sandbox Code Playgroud)
我不确定这个问题是否有绝对正确的答案.我认为Zabba对于美国/加拿大和国际上几周的日子数之间的差异有所了解.
关于历史推理,看起来David Heinemeier Hansson(DHH)于2005年2月21日做出如下承诺:https: //github.com/rails/rails/commit/25f8a25c3ea107dcd0688307ac0ce19c4306f6b4
提交消息明确指出,有意将周开始为星期一而不是星期日.考虑到大卫是自以为是,Rails的创造者,当时仍然生活在丹麦,有点理由他忽略了Ruby的日期和时间类考虑周日第0天的事实.
(稍后提交1c5a6944d38e6818d254f272057b513b038b2270将days_into_week移动到您现在看到的常量DAYS_INTO_WEEK;稍后在commit bc1bcddede0c300e9c88f76a66a152814b734981中将相同的常量添加到Date类中.
| 归档时间: |
|
| 查看次数: |
3126 次 |
| 最近记录: |