루비로 달력을 만들었어요.

7347 단어 Ruby
다음 참조Ruby에 달력을 표시하는 프로그램을 썼습니다.
(날짜 표시 방법에 공을 들여 간소화했다)
루비의 초보자를 위한 프로그램 설계 질문(전체 10문)을 수집해 보았다(전편)
구체적으로 다음 두 개를 제작했다.(현재 연월을 초기값으로 설정)
  • 연월을 산열로 수신하고 대응하는 달력을 표시하는 방법
  • 연도를 산열로 수신하고 달력을 표시하는 방법
  • require 'date'
    
    def calendar_month(year: Date.today.year, month: Date.today.month)
    
      firstday = Date.new(year, month, 1)
      lastday = Date.new(year, month, -1)
    
      first_wday = firstday.wday  # 1日の曜日(0-6)
      lastday_date = lastday.day
    
      # 日付の配列を作成(一桁の場合は1マス空白を追加)
      days = (1..lastday_date).map{ |n| n.to_s.rjust(2)}
      # 1日の曜日に合わせて配列に空白を追加し,7つ区切りの配列に
      days = Array.new(first_wday, '  ').push(days).flatten.each_slice(7).to_a
    
      puts firstday.strftime("%B %Y").center(20)
      puts %w[Su Mo Tu We Th Fr Sa].join(' ')
    
      days.each do |week|
        puts week.join(' ')
      end
    end
    
    def calendar(year: Date.today.year)
      puts '-' * 20
      (1..12).each do |n|
        calendar_month(year: year, month: n)
        puts '-' * 20
      end
    end
    
    calendar
    
    올해 달력이 순조롭게 나타났다
    --------------------
        January 2019    
    Su Mo Tu We Th Fr Sa
           1  2  3  4  5
     6  7  8  9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
    --------------------
       February 2019    
    Su Mo Tu We Th Fr Sa
                    1  2
     3  4  5  6  7  8  9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28
    --------------------
         March 2019     
    Su Mo Tu We Th Fr Sa
                    1  2
     3  4  5  6  7  8  9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    31
    --------------------
         April 2019     
    Su Mo Tu We Th Fr Sa
        1  2  3  4  5  6
     7  8  9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30
    --------------------
          May 2019      
    Su Mo Tu We Th Fr Sa
              1  2  3  4
     5  6  7  8  9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    --------------------
         June 2019      
    Su Mo Tu We Th Fr Sa
                       1
     2  3  4  5  6  7  8
     9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    --------------------
         July 2019      
    Su Mo Tu We Th Fr Sa
        1  2  3  4  5  6
     7  8  9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31
    --------------------
        August 2019     
    Su Mo Tu We Th Fr Sa
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31
    --------------------
       September 2019   
    Su Mo Tu We Th Fr Sa
     1  2  3  4  5  6  7
     8  9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30
    --------------------
        October 2019    
    Su Mo Tu We Th Fr Sa
           1  2  3  4  5
     6  7  8  9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
    --------------------
       November 2019    
    Su Mo Tu We Th Fr Sa
                    1  2
     3  4  5  6  7  8  9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    --------------------
       December 2019    
    Su Mo Tu We Th Fr Sa
     1  2  3  4  5  6  7
     8  9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31
    --------------------
    

    좋은 웹페이지 즐겨찾기