Was möchten Sie tun, wenn der Tag des aktuellen Monats in Ihrem zukünftigen Monat nicht existiert? Sagen wir, 31. Januar + 1 Monat? Sie haben das gleiche Problem, wenn Sie das Jahr erhöhen und das Startdatum ist der 29. Februar eines Schaltjahres. Es kann also keine universelle IncMonth- oder IncYear-Funktion geben, die an allen Daten konsistent arbeitet.
Für alle Interessierten empfehle ich wärmstens Julian Bucknalls Artikel über die Komplexität, die diesem Typ innewohnt der Berechnung
wie man die Anzahl von Monaten und Tagen zwischen zwei Daten berechnet.
Das Folgende ist die einzige generische Datumsinkrementfunktion, die keine Anomolien in die generische Datumsrechnung einführt. Dies wird jedoch nur erreicht, indem die Verantwortung wieder auf den Programmierer übertragen wird, der vermutlich die genauen Anforderungen der spezifischen Anwendung hat, die er programmiert.
IncDay - Hinzufügen oder Abziehen eines Anzahl der Tage.
IncWeek - Hinzufügen oder subtrahieren Sie einige Wochen.
Aber wenn Sie die eingebauten Funktionen verwenden müssen, dann sollten Sie zumindest sicher sein, dass sie tun, was Sie wollen. Sehen Sie sich die Einheiten DateUtils und SysUtils an. Der Quellcode für diese Funktionen ist einer der coolsten Aspekte von Delphi. Nachdem dies gesagt wurde, hier ist die vollständige Liste der eingebauten Funktionen:
IncDay - Hinzufügen oder Abziehen eines Anzahl der Tage.
IncWeek - Hinzufügen oder subtrahieren Sie einige Wochen.
IncMonth - Fügen Sie eine Anzahl von Monaten hinzu oder subtrahieren Sie sie.
IncYear - Addieren oder subtrahieren Sie eine Anzahl von Jahren.
Wie für den zweiten Teil Ihrer Frage, wie Sie das Systemdatum & amp; Zeit mit einem TDatetime, den folgenden schamlos gestohlenen Code aus einem anderen Beitrag wird die Arbeit machen:
%Vor%