コード例 #1
0
        // --- Méthodes ---

        /// <summary>
        /// Affiche un calendrier couleur sur la console.
        /// </summary>
        /// <param name="calendrier">le calendrier à afficher</param>
        /// <param name="dateÀSurligner">la date à surligner, null si non fournie</param>
        public static void Afficher(this ICalendrier calendrier, Date dateÀSurligner = null)
        {
            // String avec le mois et l'année pour en connaître sa longueur qui variera
            // selon la longueur du mois. Comme on connaît la longueur de l'arrière-plan de
            // l'entête, on peut s'assurer qu'elle aura toujours un centrage uniforme :
            string moisAnnée          = $"{calendrier.Mois} {calendrier.Année}";
            int    longueurBackground = 20;

            Write(" ");

            // Affichage de l'entête :
            BackgroundColor = DarkYellow;
            ColorWriteLine(Black, moisAnnée.PadLeft(((longueurBackground - moisAnnée.Length) / 2)
                                                    + moisAnnée.Length).PadRight(longueurBackground));
            ResetColor();

            // Array de jours qui correspondent aux valeurs des jours de l'enum JourDeLaSemaine...
            int[] jours = { 7, 1, 2, 3, 4, 5, 6 };

            // ... pour en afficher les deux premières lettres de leur contenu en string :
            foreach (int jour in jours)
            {
                ColorWrite(DarkYellow, $" {((JourDeLaSemaine)jour).ToString().Substring(0, 2)}");
            }

            WriteLine();

            // Affichage du calendrier, avec la date entrée surlignée, si celle-ci est spécifiée en
            // paramètre :
            for (int rangée = 0; rangée < NbRangées; ++rangée)
            {
                for (int colonne = 0; colonne < NbColonnes; ++colonne)
                {
                    if (calendrier[rangée, colonne] != 0)
                    {
                        if (calendrier.Localiser(
                                dateÀSurligner, out int rangéeDate, out int colonneDate) &&
                            rangée == rangéeDate && colonne == colonneDate)
                        {
                            Write(" ");
                            BackgroundColor = Green;
                            ColorWrite(Black, "{0, 2}", calendrier[rangée, colonne]);
                            ResetColor();
                        }
                        else
                        {
                            Write("{0, 3}", calendrier[rangée, colonne]);
                        }
                    }
コード例 #2
0
 // Implémentation de IEquatable :
 public bool Equals(ICalendrier calendrier)
 => Année == calendrier.Année &&
 Mois == calendrier.Mois;
コード例 #3
0
        // --- Méthodes ---

        // Implémentation de IComparable :
        public int CompareTo(ICalendrier calendrier)
        => new Date(Année, Mois, 1).ComparerAvec(
            new Date(calendrier.Année, calendrier.Mois, 1));
コード例 #4
0
ファイル: LireDate.cs プロジェクト: 0252497/LireDatePartie2
        static void Main(string[] args)
        {
            Title = "LireDate";

            Date date;                              // La date à reçevoir

            string strArg = string.Join(" ", args); // Les arguments convertis en texte

            if (args.Length == 0)
            {
                if (!LireDate("Date à analyser", "1000-01-01", "3000-12-31", out date))
                {
                    return;
                }
            }
            else
            {
                if (!TryParse(strArg, out date))
                {
                    MessageErreur($"Date invalide : {strArg}");
                    return;
                }
            }

            WriteLine();

            // Affichage IFormattable :
            Afficher("   Format G", $"{date:G}");
            Afficher("   Format -", $"{date:-}");
            Afficher("   Format L", $"{date:L}");
            Afficher("   Format S", $"{date:S}", couleurValeur: Magenta);
            Afficher("   Format .", $"{date:.}", couleurValeur: Magenta);
            Afficher("   Format /", $"{date:/}", couleurValeur: Magenta);

            var message = $"\nDate = {date}"; // Message à afficher

            message += $"\n\nNB : Cette date est ";

            if (date.EstTrèsSpéciale)
            {
                message += "très spéciale";
            }
            else if (date.EstSpéciale)
            {
                message += "spéciale";
            }
            else
            {
                message += "sans particularité numérologique.";
            }

            message += $"\nPS : L'année {date.Année} ";
            message += date.Année.EstBissextile() ? "est" : "n'est pas";
            message += " bissextile.";

            MessageOk(message);

            // Afficher si Noël, jour de l'an, St-Jean-Baptiste ou pas, et le jour de l'année :
            ColorWriteLine(DarkYellow, $" \n\n Jour de l'an : {date.EstJourDeLAn.OuiNon()}");
            ColorWriteLine(DarkYellow, $"      St-Jean : {date.EstStJean.OuiNon()}");
            ColorWriteLine(DarkYellow, $"         Noël : {date.EstNoël.OuiNon()}");
            ColorWriteLine(Magenta, $"  Jour numéro : {date.JourDeLAnnée}");
            ColorWriteLine(Blue, $" Jour semaine : {date.JourDeLaSemaine}");

            try
            {
                ColorWriteLine(Cyan,
                               $"  Dans 3 mois : {date.Cloner().ModifierMois(n => n + 3)}");
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageErreur($"  Dans 3 mois : date impossible");
            }

            WriteLine("");

            // Afficher le calendrier :
            Calendrier calendrier = new Calendrier(date.Année, date.MoisTypé);

            calendrier.Afficher(date);
            WriteLine("");

            // Utiliser ICalendrier :
            Debug.Assert(calendrier is object);
            Debug.Assert(calendrier is Calendrier);
            Debug.Assert(calendrier is ICalendrier);
            ICalendrier ical = default(ICalendrier);

            Debug.Assert(ical == null);

            Poursuivre();
        }