Berechnen Sie, wie viele Tage noch zu einem Geburtstag?
Habe ich ein DateTime-Objekt mit einer person ' s Geburtstag. Ich habe dieses Objekt mit der person, die Jahr, Monat und Tag der Geburt, in der folgenden Weise:
DateTime date = new DateTime(year, month, day);
Ich würde gerne wissen, wie viele Tage verbleiben, bevor diese person den nächsten Geburtstag. Was ist der beste Weg, dies zu tun in C# (ich bin neu in der Sprache)?
sicherlich ein dupe? ...
klingt so, aber die Volltextsuche nicht zu finden, die ein dupe in wenigen Sekunden, so dass ich dachte, ich würde schreiben, die Frage in einer deutlichen Art und Weise...
ähnlich wie stackoverflow.com/questions/9/...
sorry, aber es ist eine andere Frage. Es gibt einige ähnlichkeiten, aber es ist sicherlich nicht das gleiche (beste Beweis dafür ist, dass die Antworten unterschiedlich sind...)
klingt so, aber die Volltextsuche nicht zu finden, die ein dupe in wenigen Sekunden, so dass ich dachte, ich würde schreiben, die Frage in einer deutlichen Art und Weise...
ähnlich wie stackoverflow.com/questions/9/...
sorry, aber es ist eine andere Frage. Es gibt einige ähnlichkeiten, aber es ist sicherlich nicht das gleiche (beste Beweis dafür ist, dass die Antworten unterschiedlich sind...)
InformationsquelleAutor Roee Adler | 2009-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser triviale Algorithmus schlägt fehl, wenn der Geburtstag Feb 29th. Dies ist die alternative (das ist im wesentlichen die gleiche wie die Antwort von Seb Nilsson:
+1 Dies ist in der Nähe der "manuelle" Weg, ich bin gerade jetzt, ich dachte es gibt vielleicht eine nette C# - trick, um es zu vereinfachen.
behoben. Dank
Dies wird fehlschlagen, wenn der Geburtstag ist der 29. Februar und das aktuelle Jahr ist ein Schaltjahr nicht
Das ist schön und elegant, aber die Handhabung für die Feb 29, hat eine zusätzliche edge-Fall, die vermisst wird. Berücksichtigen Sie die folgenden Bedingungen: Geburtstag Feb 29 und ist Vergangenheit für das aktuelle Jahr, das aktuelle Jahr ist kein Schaltjahr, aber das nächste Jahr ist. Mit der aktuellen Logik vor, den berechneten "Tage" werden weniger, als es sein sollte, wie Sie werden um 1 Jahr bis Feb 28 obwohl es für ein Schaltjahr. Siehe meine Antwort für die leichte Linie zu zwicken.
InformationsquelleAutor Philippe Leybaert
Mit dem heutigen Jahr und der Geburtstag (Monat und Tag) funktioniert nicht mit Schaltjahren.
Nach ein wenig testen, das ist, was ich an die Arbeit:
Getestet mit dem 29. Februar auf ein Schaltjahr, und auch wenn der Geburtstag am selben Tag.
AddYears
die nie versagt für die ultimo Termine von Februar.InformationsquelleAutor Seb Nilsson
Diese basiert off von Philippe Leybaert die Antwort von oben, aber die Griffe eine zusätzliche edge-Fall, die ich nicht sehen entfielen, die in den vorhergehenden Antworten.
Den Rand Fall bin ich der Adressierung ist, wenn der Geburtstag auf einen Sprung Tag, der Geburtstag ist in der Vergangenheit für das laufende Jahr und die Aktuelles Jahr ist kein Schaltjahr, aber das nächste Jahr ist.
Die aktuelle Antwort wird in einer Folge weniger Tag, wie es Sätze mit "weiter" zum 28 Februar des Laufenden Jahres und fügt dann ein Jahr Datum Feb 28 ein Schaltjahr (was nicht stimmt). Das ändern einer Zeile erledigt diese edge-Fall.
Update: Bearbeitet pro Philippe wies darauf hin, dass mein code hatte eine ziemlich beträchtliche Fehler.
Sollte dies (jetzt) akzeptiert werden Antwort wie es richtig verarbeitet alle Daten, einschließlich Schaltjahre
InformationsquelleAutor J Stuart
InformationsquelleAutor Mayur Narula
Versuchen, diese Methode
geben Sie einfach Ihren Geburtstag und es wird wieder die verbleibenden Tage vor dem nächsten Geburtstag
InformationsquelleAutor Leon Tayson
Hatte, dies zu tun, gerade jetzt für ein Programm. Es ist einfach genug, im Gegensatz zu anderen Methoden, wenn alles, was Sie brauchen, ist ein integer-Tage verlassen.
InformationsquelleAutor Adrian