Erstellen eines Kalenders mit Ruby

Ich habe versucht, dies als Ergebnis des Ruby-Lernens zu tun. Um ehrlich zu sein, hatte ich keine Hände oder Beine, also habe ich mir die Beispielantworten und angesehen Ich beschloss es zu lesen.

Dieser Rekord. Ich studiere in "Einführung in Ruby für diejenigen, die Profis werden wollen" Es scheint, dass es immer noch nicht genug Tropfen gibt. .. ..

・ Beispielantwort https://qiita.com/sackey_24/items/8fc236bb054aff6b74c8

・ Referenzseite https://www.javadrive.jp/ruby/date_class/index5.html

Nach Code lesen

Es gab einige Dinge, die ich verstehen konnte, wenn ich mir die Antworten ansah, und einige Dinge, die ich zum ersten Mal sah. Ich habe mich zuerst umgesehen und es angeschaut.

In beiden Fällen scheint es nicht zu beginnen, ohne die Date-Klasse zu verstehen. .. ..

Datumsklasse

-Die Time-Klasse ist eine integrierte Bibliothek, aber die Date-Klasse ist anders. Nennen Sie sie daher "require". -Die Hauptmethoden sind Tag, Mund, Jahr und Tag (jede wird als Ganzzahl erfasst. Tag wird auch als Ganzzahl mit Sonntag als 0 erfasst). -Nach dem Erstellen eines Objekts kann es mithilfe des Formats (strftime-Methode) in eine Zeichenfolge konvertiert werden. →% a Abkürzung für Tag (Sonne, Mo, Do usw.)% W Zahl, die den Tag darstellt

Nachdem ich die Date-Klasse einigermaßen verstanden habe, verstehe ich die Bedeutung des Antwortcodes.

Erstellen Sie zunächst eine Variable

head = Date.today.strftime ("% B,% Y") # Den heutigen Monat und Kalender abrufen → Oben im Kalender anzeigen year = Date.today.year # Der diesjährige Kalender mon = Date.today.mon # Der heutige Monat

Nachdem wir den heutigen Kalender und Monat aus der Datumsklasse erstellt haben Erstellt aus der Datumsklasse am 1. und letzten Tag dieses Monats, wie in den Anforderungen beschrieben.

    firstday_wday = Date.new(year,mon,1).wday
    lastday_date = Date.new(year,mon,-1).day
    week = %w(Su Mo Tu We Th Fr Sa)

Der wichtige Punkt hier ist

** - Bringen Sie die obige Variable als Argument der Instanz. ** ** ** ** ・ Der letzte Tag kann durch Schreiben von "-1" erreicht werden. ** ** ** ** ・% w ist eine Notation, die ein Array erstellt (* getrennt von der Formatzeichenfolge) **

Als nächstes tatsächlich bis hierher ausgeben.

   puts head.center(20)
   puts week.join(" ")
   print "  " * firstday_wday

Ist es hier dasselbe? Ich werde zusammenfassen, wo es wurde.

** ・ Die Anzahl der Argumente in der Mittelmethode entspricht der Anzahl der Zeichen, und die Mitte ist entsprechend ausgerichtet ** ** ・ join ("") → Das Leerzeichen im Argument dient dazu, die Tage im Wochenarray offen anzuzeigen ** ** ・ Druckanzeige-Leerzeichen bis zu einem Tag im Kalender mit der Eigenschaft der Anzeige ohne Zeilenumbrüche. ** ** ** ** → Platz für die Anzahl der Tage schaffen **

Datumsangabe am Ende. Zahlen werden wiederholt verarbeitet und Zeilenumbrüche durch bedingte Verzweigung festgelegt.

   wday = firstday_wday
    (1..lastday_date).each do |date|    
    print date.to_s.rjust(2) + " " 

Ordnen Sie die Zahlen rechtsbündig an. (Bereich angegeben durch 1..lastday_wday) Fügen Sie dann ab dem letzten Starttag (1, wenn es Montag ist) 1 für jeden iterativen Prozess hinzu und beginnen Sie eine neue Zeile, wenn ein Vielfaches von 7 erreicht ist.

    wday = wday+1
    if wday%7==0                     
      print "\n"
    end
   end


 if wday%7!=0
   print "\n"
 end

Das ist es.

      May 2020      
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     

Zurückblicken

Die meisten Teile wurden in das Nachschlagewerk geschrieben, aber als es an der Zeit war, es von 0 zu implementieren, wurde es zu einem Slapstick. .. ..

Durch die Ausgabe können Sie den Teil und den Teil überprüfen, über den im Nachschlagewerk nicht ausführlich gesprochen wird (in diesem Fall die Details der Date-Klasse). Daher möchte ich fortfahren.

Darüber hinaus ist dieser Artikel meine eigene Interpretation. Wenn Sie also Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten. .. ..

Lesen wir vorerst das Kapitel über das Array zurück. .. ..

Recommended Posts

Erstellen eines Kalenders mit Ruby
Erstellen eines Wochenkalenders 2021 (Nachfüllen für Systemnotizbuch) mit Ruby
Erstellen Sie eine Lotterie mit Ruby
[Android] Erstellen Sie einen Kalender mit GridView
Ich habe ein Kalenderproblem mit Ruby versucht
Escape-Verarbeitung beim Erstellen einer URL in Ruby
Erstellen eines Browser-Automatisierungstools mit Ruby + Selenium
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
[Rails] Erstellen einer Brotkrumenliste mit Gem gretel
[Für Anfänger] Verfahren zum Erstellen eines Controllers mithilfe von Schienen
Erstellen eines lokalen Repositorys
Testfall erstellen
[Ruby] Schneiden Sie eine Zeichenfolge mit der Slice-Methode aus
Was ist ein sicherer Referenzoperator (&.), Der Ruby Ampasand verwendet?
Erstellen eines Chinchiro-Spiels mit Ruby 4. Erstellen eines Spielfortschrittsprozesses
Ein Memorandum zum Erstellen eines erweiterten Loggers mit org.slf4j.Logger
Was ist ein Ruby-Modul?
Erstellen eines Liferay-Stapels
Versuchen Sie es mit Cocoa von Ruby
Erstellen eines benutzerdefinierten Scala ExecutionContext
[Rails] Erstellen eines Suchfelds
Statisch typisierter Ruby mit Sorbet
Multiplikation innerhalb eines Ruby-Arrays
Verfahren zum Veröffentlichen einer Anwendung mit AWS (4) Erstellen einer Datenbank
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Ruby ① Erstellen einer Windows-Umgebung
Ich habe einen C-Parser (wie) mit PEG in Ruby geschrieben
[ruby] Erstellen eines Programms, das nur auf bestimmte Bedingungen reagiert
[Vollständige Programmierung] §2 Versuchen Sie es mit Ruby
Erstellen von Ruby-Klassen und -Instanzen
Machen Sie einen Diamanten mit Java
Schneiden Sie eine Ruby-Schnur aus
(Ruby on Rails6) Erstellen einer Datenbank und Anzeigen in einer Ansicht
Abrufen des Datums ohne Verwendung der Kalenderklasse
Erstellen Sie mit Eclipse ein Jetty-Projekt
Erstellen Sie ein Tomcat-Projekt mit Eclipse
Problem bei der Kalendererstellung (lustiges Ruby-Übungsproblem)
Laden Sie Dateien mit Java HttpURLConnection hoch
Installieren Sie Ruby 2.5 unter CentOS 7 mit SCL
Erstellen einer Timer-App mit Schlamm
Erstellen Sie ein Java-Projekt mit Eclipse
Implementieren Sie den gRPC-Client in Ruby
Erstellen Sie eine Filterfunktion mit Acts-as-Taggable-On
[Vollständige Programmierung] §3 Berechnen wir mit Ruby!
Java Calendar ist kein Singleton.
Verwenden des lokalen Netzwerks mit iOS 14
Was ist ein zweidimensionales Ruby-Array?
Machen Sie ein Tippspiel mit Ruby
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]