Operatory dodawania i odejmowania są przeciążone dla typów DateTimei TimeSpanzgodnie z oczekiwaniami. To wszystko jest całkiem proste. - Jaki dokładnie problem napotkałeś?
Ta odpowiedź jest oczywiście poprawna, ale możesz jej również użyć, (a - b).Daysjeśli interesuje Cię całkowita liczba dni intzamiast doubledziesiętnej reprezentacji częściowej różnicy dni.
@FahadAbidJanjua To nie jest kwestia ani perspektywa, ale kwestia czasu, to znaczy części czasowej daty. 08.08.2013 - 01.01.2013 naprawdę oznacza 08/31/2013 00:00:00 - 08/01/2013 00:00:00, co wyjaśnia, dlaczego jest to 30 dni, ponieważ dzień 31.08.2013 jest dopiero zaczyna. To wyjaśnia również, dlaczego podczas zapytania o właściwość / pole DateTime właściwym warunkiem uzyskania zakresu jest „DateTimeProperty > = FromDate && DateTimeProperty < ToDate.AddDays (1)”
Najlepsza odpowiedź, ponieważ „liczba dni” zwykle oznacza całe dni. Warto zauważyć, że Daysnie kończy się na 365 (jak inne właściwości, takie jak Hours, Minutes, Secondktórego wartość jest Nax gdzie zaczyna się następny wyższy nieruchomość). Jest taki sam, TotalDaysale bez ułamków dnia i wraca intzamiast double.
Czy to zawsze będzie działać zgodnie z oczekiwaniami? Na przykład, jeśli jeden z porównywanych dni to „dzień wiosny” czasu letniego, czy odjęcie może dać przedział czasu wynoszący 23 godziny, a jeśli tak, to wartość .Dzień w tym 23-godzinnym przedziale czasu będzie wynosić 0 ? (Sam próbowałem z tym eksperymentować, ale moje dotychczasowe wyniki nie są jednoznaczne - stackoverflow.com/questions/43644252/... )
Poproś o to, ponieważ bardzo często potrzebujesz „KALENDARZA dni między dwiema datami”, a nie tylko „liczby 24-godzinnych odstępów”. Na przykład musisz wyświetlić na osi czasu etykietę „X dni temu”. W tym przypadku różnica między „poniedziałkiem 23:59” a „wtorek 7:00 rano” powinna wynosić „1 dzień (temu)”… Więc ta .Dateczęść jest naprawdę przydatna. Mam nadzieję, że wyrazię się jasno
W każdym razie, aby uzyskać dni pomiędzy w formacie DateTime? Ponieważ potrzebuję każdej daty, aby zmodyfikować określone pole w tabelach :) Edytuj: Mam go i opublikowałem jako odpowiedź poniżej. Dzięki
// Difference in days, hours, and minutes.TimeSpan ts =EndDate-StartDate;// Difference in days.int differenceInDays = ts.Days;// This is in intdouble differenceInDays= ts.TotalDays;// This is in double// Difference in Hours.int differenceInHours = ts.Hours;// This is in intdouble differenceInHours= ts.TotalHours;// This is in double// Difference in Minutes.int differenceInMinutes = ts.Minutes;// This is in intdouble differenceInMinutes= ts.TotalMinutes;// This is in double
Różnicę możesz także uzyskać w sekundach, milisekundach i tyknięciach.
To naprawdę pomogło mi najlepiej, ponieważ moja różnica dat wynosiła pół dnia, ale mimo to, gdy Ameryka jest o 1 dzień za Australią, muszę zauważyć, że różnica jest o jeden dzień. Inne odpowiedzi wspomniane w tym wątku zawierały zero lub podwójną liczbę poniżej 1, której nie potrzebuję.
To najlepsza odpowiedź, gdy celem jest sprawdzenie, czy data minęła już następnego dnia, bez względu na to, czy pod względem czasu nie jest to pełny 24-godzinny dzień.
DateTime d =DateTime.Now;DateTime c =DateTime.Now;
c = d.AddDays(145);string cc;Console.WriteLine(d);Console.WriteLine(c);var t =(c - d).Days;Console.WriteLine(t);
cc =Console.ReadLine();
Ten fragment kodu może rozwiązać pytanie, ale wyjaśnienie naprawdę pomaga poprawić jakość posta. Pamiętaj, że w przyszłości odpowiadasz na pytanie czytelników, a ci ludzie mogą nie znać przyczyn Twojej sugestii kodu. Staraj się również nie tłoczyć kodu objaśniającymi komentarzami, ponieważ zmniejsza to czytelność zarówno kodu, jak i objaśnień!
protectedvoidCalendar1_SelectionChanged(object sender,EventArgs e){DateTime d =Calendar1.SelectedDate;// int a;TextBox2.Text= d.ToShortDateString();string s =Convert.ToDateTime(TextBox2.Text).ToShortDateString();string s1 =Convert.ToDateTime(Label7.Text).ToShortDateString();DateTime dt =Convert.ToDateTime(s).Date;DateTime dt1 =Convert.ToDateTime(s1).Date;if(dt <= dt1){Response.Write("<script>alert(' Not a valid Date to extend warranty')</script>");}else{string diff = dt.Subtract(dt1).ToString();Response.Write(diff);Label18.Text= diff;Session["diff"]=Label18.Text;}}
Ten kod jest zły na wiele sposobów! 1) Wiele kodów Winforms niezwiązanych z pytaniem. 2) Przewodowy sposób wyświetlania skrzynek wiadomości za pomocą (Myślę, że kontrolka WebBrowser). 3) za pomocą kontrolki WebBrowser, aby wyświetlić tekst, który jest już wyświetlany na etykiecie. 4) Użycie OperatorOverload Subtract () (domyślnie dla operacji „-”), które jest używane w każdym przypadku, jeśli wykonasz „MyDateA - MyDateB”. 5) Żadnego wyjaśnienia tego stosu kodu.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.