Haml - 获取当前一周的开始和结束日期
Haml - get current week start and end date
我是 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中完成,但我希望保持一致。
假设一周从星期日开始到星期六结束,并且您想使用 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
这实际上不是一个 HAML 问题,它更像是一个 Ruby and/or Rails 问题。查看 rails 日期和时间助手:
http://api.rubyonrails.org/classes/DateAndTime/Calculations.html
他们允许你做:
week_start = Time.now.beginning_of_week
简而言之,这些是您正在寻找的方法:
Date.today.beginning_of_week
Date.today.end_of_week
如果您想将一周的开始设置为星期日,您可以在初始化程序中这样做。记得重启你的服务器。
initializers/set_beginning_of_week.rb
Date.today.beginning_of_week = :sunday
进一步改进
HAML 语法 -
等同于 ERB <% %>
。所以这用于在您的视图中编写 Ruby 代码。
在您看来,您不应该设置一长串变量或执行复杂的功能。您应该尝试将这些限制为 if
、else
、each
和其他基本操作。
此外,对于这些类型的函数,您可以调用辅助方法。
我会设置一些基本的助手,例如:
helpers/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
这可以在任何视图中实现。
views/foo/show.html.haml
.calendar_header
- current_year
%p Beginning of month is
- current_month.beginning_of_month
我是 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中完成,但我希望保持一致。
假设一周从星期日开始到星期六结束,并且您想使用 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
这实际上不是一个 HAML 问题,它更像是一个 Ruby and/or Rails 问题。查看 rails 日期和时间助手:
http://api.rubyonrails.org/classes/DateAndTime/Calculations.html
他们允许你做:
week_start = Time.now.beginning_of_week
简而言之,这些是您正在寻找的方法:
Date.today.beginning_of_week
Date.today.end_of_week
如果您想将一周的开始设置为星期日,您可以在初始化程序中这样做。记得重启你的服务器。
initializers/set_beginning_of_week.rb
Date.today.beginning_of_week = :sunday
进一步改进
HAML 语法 -
等同于 ERB <% %>
。所以这用于在您的视图中编写 Ruby 代码。
在您看来,您不应该设置一长串变量或执行复杂的功能。您应该尝试将这些限制为 if
、else
、each
和其他基本操作。
此外,对于这些类型的函数,您可以调用辅助方法。
我会设置一些基本的助手,例如:
helpers/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
这可以在任何视图中实现。
views/foo/show.html.haml
.calendar_header
- current_year
%p Beginning of month is
- current_month.beginning_of_month