LoginSignup
17
17

More than 5 years have passed since last update.

適当に決まった月のカレンダーつくる方法

Last updated at Posted at 2013-10-11

なんか決まった月のカレンダーをつくりたいときにやった方法。もっといい方法ありそう。

まずi18nのlocaleに曜日のリストをつくる。 svenfuchs/rails-i18nとか使ってると最初からはいってるからべんりー。

ja:
  date:
    abbr_day_names:
      - 
      - 
      - 
      - 
      - 
      - 
      - 

つぎに、その月のデータをつくる。

# `beginning_of_week`はそのままだと月曜始まりになる。
# 今回は日曜始まり土曜終わりにしたいから`beginning_of_week(:sunday)`として
# 日曜日を週始まりにする。
from_date = Date.new(2013, 10, 1).beginning_of_week(:sunday)
to_date = Date.new(2013, 10, 31).end_of_week(:sunday)
@calendar_data = from_date.upto(to_date)

あとはView側でよしなにテーブルにしてやればいい。

<table>
  <tr>
    <!-- こう書くと、ja.ymlの`abbr_day_names`をいいかんじに処理してくれる -->
    <% t('date.abbr_day_names').each do |day_name| %>
      <td><%= day_name %></td>
    <% end %>
  </tr>
  <% @calendar_data.each do |date| %>
    <!-- wdayは曜日を日曜始まりで0〜6でだしてくれる -->
    <% if date.wday == 0 %><tr><% end %>
    <td>
      <%= date.month %>/<%= date.day %>
    </td>
    <% if date.wday == 6 %></tr><% end %>
  <% end %>
</table>

結果は下のとおり。

スクリーンショット 2013-10-11 16.07.02.png

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17