es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener el rango de fechas de la semana (lunes a domingo) de una fecha que se encuentra dentro de esa semana (lunes a domingo).

Quiero un rango de fechas de lunes a domingo para una fecha en particular que proporcionaré.
Por ejemplo:

si proporciono “2021-11-22” (lunes) (%Y-%m-%d), debería obtener un rango de fechas desde “2021-11-22” hasta “2021-11-28”.
Otro caso:
si doy cualquier fecha entre “2021-11-22” y “2021-11-28” (lunes a domingo).
Entonces debería darme el rango de fechas de (lunes a domingo) (“2021-11-22” a “2021-11-28”)

def returnDateRange(date):
    # la fecha puede ser cualquier cosa entre "2021-11-22" y "2021-11-28"
    listaDeFechas = ["2021-11-22", "2021-11-28"]
    return listaDeFechas
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el rango de fechas de lunes a domingo para una fecha dada, podemos usar el módulo datetime de Python. Podemos comenzar convirtiendo la cadena de fecha dada en un objeto datetime utilizando el método strptime() y luego usando el método weekday() para encontrar el día de la semana (lunes es 0 y domingo es 6). Con base en esto, podemos calcular las fechas de inicio y fin de la semana, que siempre serán lunes y domingo respectivamente. Aquí hay una posible implementación:

    from datetime import datetime, timedelta
    
    def get_week_date_range(date_str):
        date = datetime.strptime(date_str, '%Y-%m-%d')
        monday = date - timedelta(days=date.weekday())
        sunday = monday + timedelta(days=6)
        return monday.strftime('%Y-%m-%d'), sunday.strftime('%Y-%m-%d')
    

    Esta función toma una cadena de fecha en el formato “YYYY-MM-DD” y devuelve una tupla de dos cadenas que representan las fechas de inicio y fin de la semana (de lunes a domingo). Aquí hay algunos ejemplos:

    >>> get_week_date_range('2021-11-22')
    ('2021-11-22', '2021-11-28')
    
    >>> get_week_date_range('2021-11-25')
    ('2021-11-22', '2021-11-28')
    
    >>> get_week_date_range('2021-11-28')
    ('2021-11-22', '2021-11-28')
    

    Como puede ver, la función maneja correctamente las fechas dentro del rango del 22 de noviembre al 28 de noviembre, y siempre devuelve el rango de fechas de lunes a domingo independientemente de la fecha de entrada.

Comments are closed.