gpt4 book ai didi

ruby-on-rails - 为什么 Rails Weekday 索引与 Ruby 的不同?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:09 30 4
gpt4 key购买 nike

在 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}

ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1

因此,星期一在时间映射中为 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

最佳答案

我不确定这个问题是否有绝对正确的答案。我认为 Zabba 谈到了美国/加拿大和国际上星期几的计算方式之间的差异。

根据历史推理,David Heinemeier Hansson (DHH) 似乎在 2005 年 2 月 21 日做出了以下 promise : https://github.com/rails/rails/commit/25f8a25c3ea107dcd0688307ac0ce19c4306f6b4

提交消息清楚地表明,有意将一周的开始设为星期一而不是星期日。考虑到 David 固执己见,他是 Rails 的创造者,并且当时仍住在丹麦,因此他忽略 Ruby 的日期和时间类将星期日视为第 0 天这一事实是有道理的。

(后来提交 1c5a6944d38e6818d254f272057b513b038b2270 将 days_into_week 移动到您现在看到的常量 DAYS_INTO_WEEK;后来相同的常量被添加到提交 bc1bcddede0c300e9c88f76a66a152814b734>981 中的 Date 类)。

关于ruby-on-rails - 为什么 Rails Weekday 索引与 Ruby 的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718557/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com