我是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中进行,但我希望这一致。
答案 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代码。
在您的视图中,不应设置一长串变量或执行复杂功能。您应该尝试将这些限制为if
,else
,each
&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)
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