from datetime import date, datetime, timezone


def base_dates():
    """
    Gérer des dates de base.

    """
    # Créer deux dates
    today = date.today()
    before = date(2018, 7, 15)  # 15 juillet 2018
    # Afficher la date du jour, et aussi la formater
    print(f"Aujourd'hui nous sommes le {today}")
    print(f"Aujourd'hui nous sommes le (formaté) {today:%d/%m/%Y}")
    # Afficher la date initialisée manuellement
    print(f"La finale de Coupe du monde de football a eu lieu le {before}")


def base_datetimes():
    """
    Gérer des dates avec heure.

    """
    # Créer deux moments dans le temps
    now = datetime.now()
    before = datetime(2018, 7, 15, 20, 0)  # 15 juillet 2018 à 20h
    # Afficher la date du jour, et aussi la formater
    print(f"Maintenant nous sommes le {now}")
    print(f"Maintenant nous sommes le (formaté) {now:%d/%m/%Y %H:%M:%S}")
    # Afficher la date initialisée manuellement
    print(f"La finale de Coupe du monde de football a eu lieu à {before}")


def timezone_datetimes():
    """
    Gérer des dates avec heure, et avec fuseau horaire.

    """
    now = datetime.now(timezone.utc)
    before = datetime(2018, 7, 15, 20, 0, tzinfo=timezone.utc)  # 15 juillet 2018 à 20h
    # Afficher la date du jour, et aussi la formater
    # Voir https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
    print(f"Maintenant nous sommes le {now}")
    print(f"Maintenant nous sommes le (formaté) {now:%d/%m/%Y %H:%M:%S (%Z)}")
    # Afficher la date initialisée manuellement
    print(f"La finale de Coupe du monde de football a eu lieu à {before}")


if __name__ == "__main__":
    # Lancer la fonction qui teste des dates
    base_dates()
    # Lancer la fonction qui teste des dates avec heure
    base_datetimes()
    # Lancer la fonction qui teste des dates avec heure et fuseau horaire
    timezone_datetimes()

