Mam dwie daty. Jedna data jest wprowadzana, a inna to DateTime.Now
. Mam je w formacie mm/dd/yyyy
, może to być również format m/d/yy. Obie daty są zerowalne, tzn. Typem danych jest DateTime?
, ponieważ mogę przekazać wartość null również jako dane wejściowe. Teraz chcę porównać dwie daty tylko z formatem mm/dd/yyyy
lub m/d/yy
.Jak porównać daty w C#
Odpowiedz
Jeśli masz daty w zmiennych DateTime, nie mają one formatu , który ma.
Można użyć właściwości Date
, aby zwrócić wartość DateTime z przedziałem czasu ustawionym na północ. Tak więc, jeśli masz:
DateTime dt1 = DateTime.Parse("07/12/2011");
DateTime dt2 = DateTime.Now;
if(dt1.Date > dt2.Date)
{
//It's a later date
}
else
{
//It's an earlier or equal date
}
Po pierwsze, zrozumieć, że DateTime
obiekty nie są formatowane. Po prostu zapisują Rok, Miesiąc, Dzień, Godzinę, Minutę, Drugą itd. Jako wartość liczbową, a formatowanie ma miejsce, gdy chcesz w jakiś sposób przedstawić je jako ciąg znaków. Możesz porównywać obiekty bez ich formatowania.
Aby porównać datę wejścia z DateTime.Now
, trzeba najpierw przeanalizować wkład w terminie, a następnie porównać tylko porcje rok/miesiąc/dzień:
DateTime inputDate;
if(!DateTime.TryParse(inputString, out inputDate))
throw new ArgumentException("Input string not in the correct format.");
if(inputDate.Date == DateTime.Now.Date) {
// Same date!
}
Jeśli masz datę w DateTime
zmiennej następnie jego obiekt DateTime
i nie zawiera żadnego formatu. Sformatowana data jest wyrażana jako string
po wywołaniu metody DateTime.ToString
i podaniu w niej formatu.
Powiedzmy, że masz dwa DateTime
zmienna, można zastosować metodę porównania dla porównania,
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
fragment kodu pochodzi z msdn.
- 1. Jak porównać dwie daty w Objective-C
- 2. Jak porównać daty w LINQ?
- 3. Jak porównać daty w Javie?
- 4. Jak porównać dwie daty?
- 5. Doctrine 1.2 jak porównać daty
- 6. Jak porównać dwie daty w php
- 7. Jak porównać dwie daty (tylko daty, nie czas) w kakao?
- 8. Jak porównać DateTime w języku C#?
- 9. Jak porównać dwie wartości daty z jQuery
- 10. Jak porównać daty w polach datetime w Postgresql?
- 11. Jak porównać daty z bazy danych w Yii2
- 12. Jak porównać datownik z parametrem daty tylko w MySQL?
- 13. Jak porównać tylko daty (i nie czas) w pythonie
- 14. Jak mogę porównać dwie daty w vbscript/ASP?
- 15. Jak porównać końcówki ciągów w C?
- 16. Jak skutecznie porównać zestawy w C++?
- 17. Jak porównać tablice wielowymiarowe w języku C#?
- 18. jak porównać ciąg z enum w C#
- 19. Jak porównać tylko część daty, gdy data dostawy jest dzisiaj
- 20. C++ porównać dwa ciągi literałów
- 21. jak porównać wartości enum
- 22. Jak zmienić format daty w ulu?
- 23. Jak skutecznie porównać listę?
- 24. Jak porównać zakres adresów IP w języku C#?
- 25. Jak mogę po prostu porównać znaki w C++?
- 26. Jak porównać i konwertować znaki emoji w języku C#
- 27. Jak porównać 2 obiekty dla równości w Objective-C
- 28. Jak porównać dwa obiekty NSDate w celu C
- 29. Jak porównać typy nullable?
- 30. Jak porównać dwa ciągi znaków w scala?
Lepiej użyj 'DateTime.Today' niż' DateTime.Now.Date', jeśli nie potrzebujesz godzin, minut itd. –
@Piotr - dobry punkt - chyba że potrzebują także dostępu do godzin/minut/sekund jako innej części Praca. –
@Damien_The_Unbeliever Czy to działa dla dowolnego formatu daty? Co na temat "yyyy/MM/dd'? – Arbaaz