ruby-on-rails - end_of_week 返回不同日期

标签 ruby-on-rails ruby date datetime

对于我正在从事的项目,我希望收集上周的开始日期和结束日期。我的一周从周日开始,周六结束。

我想要什么:

如果今天是“2015 年 4 月 12 日星期日”或“2015 年 4 月 13 日星期一”,我上周的开始日期应为“2015 年 4 月 5 日星期日 00:00:00”,结束日期应为“2015 年 4 月 13 日星期六” 2015 年 4 月 23:59:59”。我正在使用 DateTime.now.beginning_of_week(:sunday).last_week(:sunday) 获取开始日期,目前使用 start_date + 6.days 获取结束日期。但是我希望使用 end_of_week 方法来获取我的结束日期。

我尝试过的:

DateTime.now.last_week.end_of_week(:sunday) and DateTime.now.beginning_of_week(:sunday).last_week.end_of_week(:sunday)

我面临的问题:

如果 DateTime.now 是“Mon, 13 Apr 2015”,我会得到正确的开始日期(“Sun, 2015 Apr 05 00:00:00”)和结束日期(“Sat, 11 Apr 2015 23:59: 59”)。但是,如果我的 DateTime.now 是(“Sun,2015 年 4 月 12 日”),我的开始日期和结束日期将变为(“Sun,2015 年 3 月 29 日 00:00:00”)到(“Sat,2015 年 4 月 4 日 23:59:59” ”)。我的猜测是这种行为是因为 ruby​​ 中的一周从星期一开始。但就我而言,我从周日开始一周,但我仍然得到不正确的日期。

有没有办法可以使用 end_of_week 来实现我想要的目标,或者我现在正在做的任何事情来获得结束日期是最好的方法。

最佳答案

UPD由于对原始问题的误解,答案已更改。

▶ dt = DateTime.parse "Sun, 12 Apr 2015"
#=> Sun, 12 Apr 2015 00:00:00 +0000
▶ [
▷   (dt - 1.week).beginning_of_week(:sunday), 
▷   (dt - 1.week).end_of_week(:sunday)
▷ ]
#=> [
#  [0] Sun, 05 Apr 2015 00:00:00 +0000,
#  [1] Sat, 11 Apr 2015 23:59:59 +0000
#]

关于ruby-on-rails - end_of_week 返回不同日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609519/

相关文章:

ruby-on-rails - rails 4 中的用户 session 超时

javascript - 将日期对象存储到数组

javascript - 在 momentjs 中显示没有年份的长日期格式

ruby-on-rails - CarrierWave:调整默认图像大小

ruby-on-rails - 使用 :memory: database 运行 Rails 测试

ruby-on-rails - ruby on rails 无法找到文件 'jquery.ui.all'

ruby - Ruby 中一个匿名函数的参数

ruby - 如何从 C 扩展将关键字传递到 Ruby 方法?

ruby-on-rails - 将 USD "money"转换为数字的 Ruby 字符串

iPhone SQLite日期问题