Tak na przykład jeśli mam następujący kod:użycie NodaTime obliczyć integracyjnego dniowy okres
var nodaStart = new LocalDate(2012, 5, 1);
var nodaEnd = new LocalDate(2012,5,2);
var daysBetween = Period.Between(nodaStart, nodaEnd,PeriodUnits.Day);
Następnie daysBetween.Days == 1
Jednak zakres obliczyć musi liczyć, że w ciągu 2 dni. tj. musi zawierać datę początkową i końcową.
Faktyczna metoda może przyjąć i datę rozpoczęcia i zakończenia (nie więcej niż jeden rok) i musi obliczyć liczbę dni. Jeśli jest więcej niż 31 dni, to pozostała część jest zwracana jako liczba całych tygodni.
Ta logika działa dobrze, ale ponieważ liczba jest wyjątkowa, jestem jeden dzień.
Zgaduję, że mogę po prostu zrobić startDate.addDays(-1)
, zanim stworzę z tego nodaStart
, ale zastanawiam się, czy istnieje bardziej elegancki/ładny sposób, aby noda zwrócił okres.
Dzięki
UPDATE: miałem lektury the source code dla klasy Period
i operator +
jest przeciążony, więc mogę dodać
daysBetween += Period.FromDays(1);
Praca dla Jon Skeet –
Jeśli zrobisz to prawdopodobnie powinieneś zamiast tego zrobić endDate.AddDays (1). 2012/05/02 to 2012/05/02 00:00 - rano drugiego dnia. Chcesz nocy 2, więc dodaj dzień do końca, zamiast odejmowania jednego dnia od początku. –