Noodles: kleines Datumsproblem

Beitrag lesen

Hi Simone,

ich kenne mich leider in PHP nicht aus. Aber ich nehme an, dass es in PHP genauso Datumsfunktionen geben muss (wie eigentlich in jeder Hochsprache).

Losgelöst von PHP würde ich das Problem folgendermaßen lösen:
Ich hole mir vom Ausgangsdatum den ersten des Monats (1.1.). Zu diesem Datum addiere ich zwei Monate hinzu (1.3.) und ziehe hiervon einen Tag ab, dann erhalte ich den 28.2. bzw den 29.2.

Ich habe dir den Code stellvertretend für PHP in SQL und VB.NET aufgeschrieben. Vielleicht kannst du dieses Muster ja in PHP nachbauen

T-SQL:
-- temporäre Variablen
DECLARE @LAST_OF_MONTH datetime
DECLARE @FIRST_OF_MONTH datetime
DECLARE @TWO_MONTHS_ADDED datetime
DECLARE @TARGET_DATE datetime

select @LAST_OF_MONTH = '20050131' -- Startdatum

-- ersten des Monats berechnen
select @FIRST_OF_MONTH = DATEADD(day, (- DATEPART(DAY,@LAST_OF_MONTH) +1), @LAST_OF_MONTH)
-- zwei Monate addieren
select @TWO_MONTHS_ADDED = DATEADD(month, 2, @FIRST_OF_MONTH)
-- einen Tag abziehen und voilà...
select @TARGET_DATE = DATEADD(day, -1, @TWO_MONTHS_ADDED)

VB.Net:
Dim GivenDate As New Date(2005, 1, 31)
Dim SearchedDate As Date = GivenDate.AddDays(1 - GivenDate.Day).AddMonths(2).AddDays(-1)

Dieses Muster ist völlig losgelöst von jedem Schaltjahr, da die Datumsfunktionen für dich den Rest erledigen.

Hoffe ich konnte dir weiterhelfen
Grüße aus dem wilden Süden
Noodles