Créer un calendrier avec Ruby

J'ai essayé de le faire en tant que sortie de l'apprentissage Ruby, Pour être honnête, je n'avais ni mains ni jambes, alors j'ai regardé les exemples de réponses et J'ai décidé de le lire.

Ce record. J'étudie en "Introduction à Ruby pour ceux qui veulent devenir professionnels" Il semble qu'il n'y ait toujours pas assez de goutte. .. ..

・ Exemple de réponse https://qiita.com/sackey_24/items/8fc236bb054aff6b74c8

・ Site de référence https://www.javadrive.jp/ruby/date_class/index5.html

Lire par code

Il y avait des choses que je pouvais comprendre en regardant les réponses, et certaines choses que j'ai vues pour la première fois. J'ai d'abord regardé autour de moi et l'ai regardé.

Quoi qu'il en soit, cela ne semble pas démarrer sans comprendre la classe Date. .. ..

Classe de date

-La classe Time est une bibliothèque intégrée, mais la classe Date est différente, alors appelez-la avec "require". -Les principales méthodes sont day, mouth, year et wday (chacune est acquise sous forme d'entier. Wday est également acquise sous forme d'entier avec Sunday comme 0). -Après avoir créé un objet, il peut être converti en chaîne de caractères en utilisant le format (méthode strftime) →% a Abréviation du jour (dim, lun, jeu, etc.)% w Nombre représentant le jour

Maintenant que je comprends dans une certaine mesure la classe Date, je comprends la signification du code de réponse.

Commencez par créer une variable

head = Date.today.strftime ("% B,% Y") # Obtenir le mois et le calendrier du jour → Afficher en haut du calendrier year = Date.today.year # Calendrier de cette année mon = Date.today.mon # Le mois d'aujourd'hui

Maintenant que nous avons créé le calendrier et le mois d'aujourd'hui à partir de la classe Date Créé à partir de la classe Date le 1er et dernier jour de ce mois, comme décrit dans les exigences.

    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)

Le point important ici est

** - Apportez la variable ci-dessus comme argument de l'instance. ** ** ** ・ Le dernier jour peut être obtenu en écrivant "-1". ** ** ** ・% w est une notation qui crée un tableau (* distinct de la chaîne de caractères de format) **

Ensuite, sortez en fait jusqu'ici.

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

Est-ce la même chose ici? Je vais résumer où il est devenu.

** ・ Le nombre d'arguments dans la méthode du centre est le nombre de caractères, et le centre est aligné en conséquence ** ** ・ join ("") → L'espace dans l'argument sert à afficher ouvertement les jours dans le tableau de la semaine ** ** ・ Imprimer affiche les blancs jusqu'à un jour sur le calendrier en utilisant la caractéristique d'affichage sans saut de ligne. ** ** ** → Faites de la place pour le nombre de jours **

Notation de date à la fin. Les nombres sont traités à plusieurs reprises et les sauts de ligne sont définis par branchement conditionnel.

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

Disposez les nombres justifiés à droite. (Plage spécifiée par 1..lastday_wday) Ensuite, à partir du dernier jour de début (1 si c'est lundi), ajoutez 1 pour chaque processus itératif et démarrez une nouvelle ligne lorsqu'elle atteint un multiple de 7.

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


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

C'est tout.

      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     

Regarder en arrière

La plupart des parties ont été écrites dans le livre de référence, mais quand est venu le temps de l'implémenter à partir de 0, il est devenu un slapstick. .. ..

En le sortant, vous pouvez vérifier cette partie et la partie dont on ne parle pas profondément dans le livre de référence (dans ce cas, les détails de la classe Date), je voudrais donc continuer régulièrement.

De plus, cet article est ma propre interprétation, donc si vous trouvez des erreurs, je vous serais reconnaissant si vous pouviez les signaler. .. ..

Relisons le chapitre sur le tableau pour le moment. .. ..

Recommended Posts

Créer un calendrier avec Ruby
Création d'un calendrier hebdomadaire 2021 (recharge pour notebook système) avec Ruby
Créer une loterie avec Ruby
[Android] Créer un calendrier à l'aide de GridView
J'ai essayé un problème de calendrier avec Ruby
Traitement d'échappement lors de la création d'une URL dans Ruby
Création d'un outil d'automatisation de navigateur avec Ruby + Selenium
(Ruby on Rails6) Création de données dans une table
[Rails] Création d'une liste de miettes de pain à l'aide de Gem gretel
[Pour les débutants] Procédure de création d'un contrôleur à l'aide de rails
Créer un référentiel local
Créer un cas de test
[Ruby] Découpez une chaîne de caractères à l'aide de la méthode slice
Qu'est-ce qu'un opérateur de référence sûr (&.) Utilisant Ruby Ampasand?
Création d'un jeu Chinchiro avec Ruby 4th Création d'un processus de progression du jeu
Un mémorandum pour créer un enregistreur étendu à l'aide de org.slf4j.Logger
Qu'est-ce qu'un module Ruby?
Créer un lot Liferay
Essayez d'utiliser Cocoa de Ruby
Création d'un ExecutionContext personnalisé Scala
[Rails] Création d'un champ de recherche
Rubis de type statique avec sorbet
Multiplication dans un tableau Ruby
Procédure de publication d'une application à l'aide d'AWS (4) Création d'une base de données
Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~
Ruby ① Création d'un environnement Windows
J'ai écrit un analyseur C (comme) en utilisant PEG dans Ruby
[ruby] Création d'un programme qui ne répond qu'à des conditions spécifiques
[Programmation complète] §2 Essayez d'utiliser Ruby
Création de classes et d'instances Ruby
Faire un diamant en utilisant Java
Découpez une chaîne de rubis
(Ruby on Rails6) Créer une base de données et l'afficher dans une vue
Obtenir la date sans utiliser la classe Calendar
Créer un projet Jetty à l'aide d'Eclipse
Créer un projet Tomcat à l'aide d'Eclipse
Problème de création de calendrier (problème de pratique amusant avec Ruby)
Télécharger des fichiers à l'aide de Java HttpURLConnection
Installez Ruby 2.5 sur CentOS 7 en utilisant SCL
Créer une application de minuterie avec de la boue
Créer un projet Java à l'aide d'Eclipse
Implémenter le client gRPC dans Ruby
Créer une fonction de filtrage en utilisant actes-as-taggable-on
[Programmation complète] §3 Calculons avec Ruby!
Le calendrier Java n'est pas un singleton.
Utilisation du réseau local avec iOS 14
Qu'est-ce qu'un tableau bidimensionnel Ruby?
Faites un jeu de frappe avec ruby
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]