Haml - 获取当前周开始和结束日期

时间:2015-03-02 08:33:32

标签: ruby-on-rails ruby haml

我是HAML的新手,我有(我希望很简单)关于日期/时间的问题。是否有可能以非常非常复杂的方式获取HAML当前周的开始和结束日期?我想在我的日历中使用这些日期进行导航。

月份和年份相当容易:

- year       = Date.today.year
- month      = Date.today.month
- day        = Date.today
- monthEnd   = year.to_s + "-" + month.to_s + "-" + Integer(Date.new(year, month, -1).strftime("%d")).to_s
- monthStart = Date.new(year, month, 1)
- yearStart  = year.to_s + "-01-01";
- yearEnd    = year.to_s + "-12-31";

如果不可能,我会在Javascript中进行,但我希望这一致。

3 个答案:

答案 0 :(得分:4)

简而言之,这些是您正在寻找的方法:

Date.today.beginning_of_week
Date.today.end_of_week

如果要将星期的开头设置为星期日,则可以在初始化程序中执行此操作。请记住重新启动服务器。

<强>初始化/ set_beginning_of_week.rb

Date.today.beginning_of_week = :sunday

进一步改进

HAML语法-等同于ERB <% %>。所以这用于在视图中编写Ruby代码。

在您的视图中,不应设置一长串变量或执行复杂功能。您应该尝试将这些限制为ifelseeach&amp;其他基本操作。

此外,对于这些类型的函数,您可以调用辅助方法。

我设置了一些基本的帮手,如:

<强>助手/ application_helper.rb

def current_date
  Date.today # or use Time.zone.today as Rob suggested
end

def current_month
  current_date.month
end

def current_year
  current_date.year
end

导致轻松通话

current_year
current_month
current_date

current_date.beginning_of_week
current_date.end_of_week

current_month.beginning_of_month
current_month.end_of_month

current_year.beginning_of_year
current_year.end_of_year

然后可以在任何视图中实现。

<强>视图/富/ show.html.haml

.calendar_header
  - current_year

%p Beginning of month is
  - current_month.beginning_of_month

答案 1 :(得分:3)

假设周从星期日开始到星期六结束,你想使用Ruby的标准库:

- weekStart = Date.today.prev_day(Date.today.cwday)

- weekEnd = Date.today.next_day(6-Date.today.cwday)

顺便说一下,如果您使用的是Rails,我可能会利用Time.zone.now代替Date.today。你的其他人也一样。有关详情,请参阅this blog

@TheChamp:

Rails有这样做的便利方法:

weekStart = Time.zone.today.beginning_of_week

weekEnd = Time.zone.today.end_of_week

答案 2 :(得分:-1)

这不是一个HAML问题,它更像是一个Ruby和/或Rails问题。看看rails的日期和时间助手:

http://api.rubyonrails.org/classes/DateAndTime/Calculations.html

他们允许你这样做:

week_start = Time.now.beginning_of_week