"""
Fechas en la zona de presentación.

Todo instante se guarda en UTC, pero «hoy» es una pregunta que sólo tiene
respuesta en una zona concreta. El corte del día del presupuesto de cuota y la
fecha que se muestra al lado de un estado de cobertura tienen que usar la misma,
o «el cupo de hoy» significa una cosa en la pantalla y otra en la base (FR-065).
"""

import zoneinfo
from datetime import date

from django.conf import settings
from django.utils import timezone


def display_timezone() -> zoneinfo.ZoneInfo:
    return zoneinfo.ZoneInfo(settings.DISPLAY_TIMEZONE)


def today() -> date:
    """El día en curso según la zona de presentación, no según UTC."""
    return timezone.now().astimezone(display_timezone()).date()


def current_period() -> str:
    """Período de consumo en curso, como año y mes."""
    return today().strftime('%Y-%m')
