Así por ejemplo, si tengo el siguiente código:uso NodaTime para calcular un periodo de días inclusive
var nodaStart = new LocalDate(2012, 5, 1);
var nodaEnd = new LocalDate(2012,5,2);
var daysBetween = Period.Between(nodaStart, nodaEnd,PeriodUnits.Day);
Entonces daysBetween.Days == 1
Sin embargo, el rango de calculo necesidades a eso cuenta como 2 días. es decir, debe incluir la fecha de inicio y finalización.
El método real puede tomar y fecha de inicio y finalización (que no están a más de un año de diferencia) y necesita calcular el número de días. Si hay más de 31 días, el resto se devuelve como un número de semanas completas.
Tengo esa lógica funcionando bien, pero como el recuento es exclusivo, estoy fuera un día.
Supongo que puedo hacer startDate.addDays(-1)
antes de crear nodaStart
, pero me pregunto si hay una forma más elegante/bonita de que noda devuelva el Período.
Gracias
ACTUALIZACIÓN: he tenido una lectura de the source code para la clase Period
y el operador +
está sobrecargado por lo que puedo añadir
daysBetween += Period.FromDays(1);
trabajo para Jon Skeet –
Si lo hace eso, probablemente deberías hacer endDate.AddDays (1) en su lugar. 2012/05/02 es 2012/05/02 00:00 - es decir, la mañana del 2 de febrero. Desea la noche del 2, así que agregue un día hasta el final, en lugar de restar un día desde el principio. –