MC, 12:01 sobota, 23.02.2013 r.
Ilustracja do artykułu: .NET & DateTime - Operacje na datach; stworzenie obiektu daty pierwszego dnia miesiąca

.NET & DateTime - Operacje na datach; stworzenie obiektu daty pierwszego dnia miesiąca

Umiejętność właściwego operowania na datach w różnych językach programowania, jest w wielu przypadkach bardzo pomocna. Ostatnio pisałem o tym nieco w kontekście PHP. Tym razem chciałbym zanotować dwie z kilku możliwych dróg na ustalenie daty, na początek bieżącego miesiąca, co będzie dobrym do uogólnienia przykładem na to, jak posługiwać się datami w języku C#.

Dlaczego akurat ustawiamy datę na pierwszy dzień miesiąca?

Prawdę mówiąc, bez większego powodu. Znaczy, ja jakiś czas temu pracując nad pewnym zagadnieniem, taki powód miałem, ale jeśli chodzi o zanotowanie sobie generalnego podejścia, mógłby to być zupełnie inny przykład. Ten jednak będzie dobry w mojej ocenie, więc przy nim zostanę.

Jak więc operować na datach w technologiach .NET?

Nie jest tajemnicą, że do obsługi dat służy obiekt DateTime. W naszym przypadku również z niego skorzystamy i to na dwa sposoby. Jak już założyliśmy sobie we wstępie, postaramy się otrzymać datę, czy właściwie obiekt definiujący datę, odpowiadającą pierwszemu dniu obecnego miesiąca. Żeby to zobrazować - dziś mamy 23. dzień lutego, zatem chcemy otrzymać datę 01.02.2013. Spójrzmy na poniższy kod przedstawiający dwa z możliwych podejść:
DateTime chwilaObecna = DateTime.Now;
DateTime pierwszyDzienMiesiaca_1 = new DateTime(chwilaObecna.Year, chwilaObecna.Month, 1); // Podejście pierwsze
DateTime pierwszyDzienMiesiaca_2 = chwilaObecna.AddDays(1 - chwilaObecna.Day); // Podejście drugie

W pierwszej linijce kodu zapisujemy do zmiennej datę, odpowiadającą chwili wykonania tego kodu. Następnie pierwsze z podejść jakie chciałem zanotować, opiera się o stworzenie nowego obiektu daty, z przekazanymi parametrami roku, miesiąca i dnia, przy czym dwa pierwsze ustalamy na zgodne z chwilą obecną, natomiast dzień ustalamy "na sztywno" o wartości 1. Tym sposobem otrzymujemy datę pierwszego dnia obecnego miesiąca.
Ten sam efekt uzyskamy stosując podejście drugie, które opiera się na użyciu metody AddDays(). Możemy dzięki niej przesuwać pewną datę o konkretną liczbę dni, przekazanych jako argument liczbowy o znaku dodatnim bądź ujemnym, jak to jest w naszym przypadku. Odejmujemy więc odpowiednią liczbę dni, tak by data wskazała na pierwszy dzień miesiąca.

Jak widzimy są to podejścia proste, ale stwarzające szerokie perspektywy. Można je dowolnie modyfikować do własnych potrzeb tak by w sposób właściwy osiągnąć zamiar.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: