Tengo una fecha "10/10/11(m-d-y)"
y quiero agregarle 5 días usando un script Python. Considere también una solución general que funcione en los fines de mes.
Estoy usando el siguiente código:
import re
from datetime import datetime
StartDate = "10/10/11"
Date = datetime.strptime(StartDate, "%m/%d/%y")
print Date
-> está imprimiendo '2011-10-10 00:00:00'
Ahora quiero agregar 5 días a esta fecha. Use el siguiente código:
EndDate = Date.today()+timedelta(days=10)
Lo que devolvió este error:
name 'timedelta' is not defined
name 'timedelta' is not defined
, eso significa que no has definido nadatimedelta
. Python suele ser bastante informativo sobre sus mensajes de error.Respuestas:
Las respuestas anteriores son correctas, pero generalmente es una mejor práctica:
Entonces tendrás, usando
datetime.timedelta
:fuente
strptime
método en ladatetime
clase en eldatetime
módulo, por lo que debe especificarlodatetime.datetime
.datetime
? No puede confiar en la convención para saberlo, pero siempre tiene que mirar las importaciones.from datetime import DateTime
porque las clases son CamelCased, pero datetime precede a PEP8.Importar
timedelta
ydate
primero.Y
date.today()
volverá la fecha y hora de hoy, puede ser que quierasfuente
date
objeto no tienetimedelta
método. ¿Qué versión de Python estás usando?from datetime import timedelta, date; date.today() + timedelta(days=10)
Si ya estás usando pandas , puedes ahorrar un poco de espacio al no especificar el formato:
fuente
Supongo que te estás perdiendo algo así:
fuente
Aquí hay otro método para agregar días en la fecha usando la relación relativa de dateutil .
Salida:
fuente
Si desea agregar días hasta la fecha ahora, puede usar este código
fuente
Aquí está la función de obtener desde ahora + días específicos
Uso:
fuente
Para tener un código menos detallado y evitar conflictos de nombres entre datetime y datetime.datetime , debe cambiar el nombre de las clases con los nombres de CamelCase .
Entonces puede hacer lo siguiente, que creo que es más claro.
Además, no habría conflicto de nombres si lo desea
import datetime
más adelante.fuente
usando
timedelta
s puedes hacer:fuente
En general, ahora tiene una respuesta, pero tal vez mi clase que creé también sea útil. Para mí, resuelve todos mis requisitos que he tenido en mis proyectos de Pyhon.
Cómo usarlo
self.tz = pytz.timezone("Europe/Warsaw")
- aquí define la zona horaria que desea usar en el proyectoGetDate("2019-08-08").current()
- esto convertirá la fecha de su cadena en un objeto con reconocimiento de tiempo con la zona horaria que definió en el punto 1. El formato de cadena predeterminado esformat="%Y-%m-%d"
pero no dude en cambiarlo. (ej.GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)GetDate("2019-08-08").get_month_first_day()
devuelve fecha dada (cadena u objeto) mes primer díaGetDate("2019-08-08").get_month_last_day()
devuelve fecha dada mes último díaGetDate("2019-08-08").minimum_time()
devuelve fecha dada inicio del díaGetDate("2019-08-08").maximum_time()
devuelve fecha dada fin de díaGetDate("2019-08-08").time_delta_days({number_of_days})
devuelve la fecha dada + agregar {número de días} (también puede llamar:GetDate(timezone.now()).time_delta_days(-1)
para ayer)GetDate("2019-08-08").time_delta_haours({number_of_hours})
similar al pt 7 pero trabajando en horasGetDate("2019-08-08").time_delta_seconds({number_of_seconds})
similar al pt 7 pero trabajando en segundosfuente
En algún momento necesitamos usar la búsqueda por fecha y fecha. Si usamos date__range, entonces debemos agregar 1 días con to_date, de lo contrario el conjunto de consultas se vaciará.
Ejemplo:
desde datetime import timedelta
from_date = parse_date (request.POST ['from_date'])
to_date = parse_date (request.POST ['to_date']) + timedelta (días = 1)
assist_list = models.DailyAttendance.objects.filter (attdate__range = [from_date, to_date])
fuente