Come creare una Rubrica Telefonica in C# – Lezione 13: Calcolare l’età di un contatto

Come creare una Rubrica Telefonica in C# - Lezione 13 - Calcolare l'età di un contatto

Calcolare l’età di un contatto in C#: Proseguiamo la creazione della nostra rubrica telefonica in C#, aggiungendo la possibilità di calcolare l’età di un contatto.

Calcolare l’età di un contatto è davvero molto semplice, ciò di cui abbiamo bisogno sono 2 informazioni:

  • La data di nascita
  • La data attuale

Per quanto riguarda la data di nascita, dovrà necessariamente essere inserita nella rubrica, la data attuale invece la calcoleremo in tempo reale nella funzione.

Per chi non avesse seguito il video precedente, su come calcolare il segno zodiacale di un contatto, consiglio di farlo prima di procedere, perché ci sono alcune cose spiegate in quel video che ci saranno utili in questa lezione.

Iniziamo con la funzione completa per il calcolo dell’età che poi vi andrò a spiegare nel dettaglio.

public static string calcola_eta_contatto(string datanascita)
    {
        string eta_contatto = "";
        // ACQUISISCI DATA ODIERNA
        DateTime data_odierna = DateTime.Today;
        DateTime data_nascita = Convert.ToDateTime(datanascita);
        int differenza_eta = data_odierna.Year - data_nascita.Year;
            if (data_nascita.Month > data_odierna.Month)
            {
                differenza_eta = differenza_eta - 1;
            }
            else if (data_nascita.Month == data_odierna.Month && data_nascita.Day > data_odierna.Day)
            {
                differenza_eta = differenza_eta - 1;
            }
        eta_contatto = differenza_eta.ToString();
        return eta_contatto;
    }

Questa funzione prevede in ingresso una stringa (che dovrebbe essere formattata in questo modo dd/mm/yyyy)

All’interno della funzione creiamo 2 variabili di tipo DateTime, che quindi contengono al loro interno la data (giorno, mese, anno, ora, minuti e secondi) sia di nascita che attuale.

Non avendo passato nessuna informazione per quanto riguarda l’ora, sarà impostata sulla mezzanotte (quindi 00:00:00).

DateTime.Today ci permette di ottenere la data odierna.

Convert.ToDateTime(datanascita) invece converte la stringa passata da string a datetime (quindi il contenuto cambierà da 01/01/1900 a 01/01/1900 00:00:00).

Calcolare l’età di un contatto in C#

Ora che abbiamo entrambe le date in formato DateTime, possiamo confrontare gli anni per verificare quanti anni sono passati da quello di nascita a quello attuale e salvare la differenza in una variabile di tipo int.

Questa sottrazione però ha uno svantaggio, cioè non tiene conto dei mesi e dei giorni, quindi se una persona è nata nel 2000, nel 2019 segnerà sempre 19 anni, anche se il mese del compleanno non è ancora stato raggiunto.

Per questo motivo abbiamo bisogno di aggiungere una condizione, che verifica se il mese di nascita del contatto è stato raggiunto.

Se il mese non è ancora raggiunto scala l’età di 1, se invece è stato raggiunto dovremo effettuare un’ulteriore verifica.

In questo caso dobbiamo verificare se il giorno è stato raggiunto, ancora una volta se non lo fosse dovremo scalare l’età di 1.