2011-03-24 16 views
15

Necesito obtener objetos date para el primer y el último día del año en curso.Obtener el objeto de fecha para el primer/último día del año actual

Actualmente estoy usando este código que funciona bien, pero tengo curiosidad si hay una manera más agradable de hacerlo; p.ej. sin tener que especificar el mes/día manualmente.

from datetime import date 
a = date(date.today().year, 1, 1) 
b = date(date.today().year, 12, 31) 
+1

no estoy seguro de que realmente me clasifico su solución como una solución manual; de hecho, es mucho más claro y, por lo tanto, "más agradable" que las alternativas que implican aritmética de fechas. –

+0

Creo que esto es tan "agradable" como lo que obtendrás. ¿Qué es exactamente lo que no te gusta de este código? – NPE

+0

En realidad, solo quería saber si hay alguna función para obtener, p. el primer/último día de un mes del que no tengo noticias. – ThiefMaster

Respuesta

12

La única mejora real que viene a la mente es dar a las variables nombres más descriptivos que a y b.

+0

Esos fueron solo un ejemplo. Estoy usando esos dos objetos de fecha en una llamada a función. – ThiefMaster

+0

@ThiefMaster Bastante justo. Creo que ayudaría a obtener buenas respuestas si describiera qué es exactamente acerca de su código que le parezca poco elegante. – NPE

+2

Además, no es necesario llamar a today() dos veces, almacenarlo en una variable. –

1

No hay nada en la biblioteca de Python, pero hay bibliotecas externas que completan esta funcionalidad. Por ejemplo, pandas tiene una biblioteca de series de tiempo, con el que puede hacer:

from datetime import date 
from pandas.tseries import offsets 

a = date.today() - offsets.YearBegin() 
b = date.today() + offsets.YearEnd() 

Mientras pandas es una exageración si lo que quieres es el año comienza y funcionalidad de fin de año, sino que también tiene soporte para una gran cantidad de otros conceptos de alto nivel tales como días laborales, calendarios de vacaciones, mes/trimestre/año compensaciones: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects

1
from datetime import datetime 

starting_day_of_current_year = datetime.now().date().replace(month=1, day=1)  
ending_day_of_current_year = datetime.now().date().replace(month=12, day=31) 
+0

Algunos contextos o explicaciones pueden ayudar a quienes buscan esta solución en el futuro. – Toby

Cuestiones relacionadas