Nach dem Erlernen von "Einführung in Ruby für Profis", allgemein bekannt als Cherry Book Als ich meine Hände bewegen und meine Eingaben in die Praxis umsetzen wollte, fand ich einen Artikel des Autors. "Wenn Sie Probleme mit dem Ausgabematerial haben !? Ich habe Programmierprobleme für Ruby-Anfänger gesammelt (insgesamt 10 Fragen)"
Wir lösen auch andere Probleme. Erste Frage: Problem bei der Kalendererstellung (lustiges Ruby-Übungsproblem) Zweite Frage: Problem bei der Erstellung von Karaoke-Maschinen Dritte Frage: Problem bei der Erstellung der Bingokarte Vierte Frage: Problem mit Bonusgetränken Fünfte Frage: Problem bei der Erstellung des Telefonbuchs
Die erste hier aufgeführte Frage
Dies ist ein orthodoxes Problem bei der Kalendererstellung, das in "Fun Ruby" beschrieben wird. Wenn Sie die API der Date-Klasse kennen, können Sie Code nur mit grundlegenden Programmierkenntnissen schreiben.
Verwenden Sie die Date-Klasse, um das Datum und den Tag des ersten und letzten Monats des Monats zu ermitteln und den Kalender im folgenden Format anzuzeigen:
Das Ziel ist es, dass es so aussieht
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
Als ich suchte, konnte ich verschiedene Antworten finden, aber meine Antwort war so.
require 'date'
def monthly_calendar(this_day = Date.today) #Ausführungsdatum
#Extrahieren Sie den ersten Tag des Ausführungsmonats
first_day = Date.new(this_day.year,this_day.month,1)
#Sonntag der ersten Woche des Monats(Oben links im Kalender)Extrahieren Sie das entsprechende Datum
start_day = first_day - first_day.strftime('%w').to_i
# month year
puts this_day.strftime('%B %Y').center(21)
# weekdays
puts "\sSu\sMo\sTu\sWe\sTh\sFr\sSa"
# days
while start_day.month <= first_day.month
if start_day.month != first_day.month
print "\s\s\s"
elsif start_day.strftime('%u') == "6"
print "\s" + start_day.strftime('%e') + "\n"
else
print "\s" + start_day.strftime('%e')
end
start_day += 1
end
end
puts monthly_calendar
Selbst wenn ich nur das Jahr und den Monat als Argumente übergeben habe, konnte ich den Kalender für diesen Monat anzeigen.
puts monthly_calendar(Date.new(1995,8)) #Kann in jedem Monat angegeben werden
August 1995
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
Es scheint, dass der Wert am Datum <1995-08-01> übergeben wird.
Bitte lassen Sie uns wissen, wenn es Verbesserungen gibt.
Recommended Posts