Doktor Knallcharge: Datum ohne wochenende ausgeben

Beitrag lesen

Jetzt bin ich etwas irritiert.

function werktageAddieren($addTage)
{
    $zeitpunkt = time();
    $tag = getdate($zeitpunkt);

Mit dieser Funktion berechnest du x Werktage ab jetzt. Das macht dann auch mein Funktionsvorschlag.

Deine ursprüngliche Frage war aber was anderes:

Ich würde gerne ein vom Benutzer eingegenes Datum auslesen und bei Knopdruck auf einen
Button wieder mit + 2 [Werk-] Tagen ausgeben.

Das geht mit einer kleinen Änderung meines Vorschlags zwar auch (Variable heute zum Argument datum aufwerten) …

function addiereWerktage(datum, tage) {  
  var korrektur = 0; // Korrekturtage für Start am Sonnabend oder Sonntag  
  if (datum.getDay() == 6) { // Sonnabend  
     korrektur += 2  
  }  
  else if (datum.getDay() == 0) { // Sonntag  
     korrektur += 1  
  }  
  return new Date(datum.getFullYear(), datum.getMonth(), datum.getDate() + korrektur + tage + Math.floor(tage / 5) * 2);  
}

… geht aber noch wesentlich simpler:

function addiereZweiWerktage(datum) {  
  var addition = {0: 2, 1: 2, 2: 2, 3: 2, 4: 4, 5: 4, 6: 3}; // Wochentage Sonntag (0) bis Sonnabend (6)  
  return new Date(datum.getFullYear(), datum.getMonth(), datum.getDate() + addition[datum.getDay()]); // entsprechend Wochentag nötige Anzahl (Werk-) Tage hinzuzählen  
}

Wenn's immer nur zwei Werktage sein sollen, reicht eine feste Tabelle, in der jedem Wochentag von Sonntag bis Sonnabend die Anzahl Tage zugeordnet ist, die addiert werden müssen, um auf den zweiten Folgewerktag zu bekommen: Von Sonntag bis Mittwoch jeweils plus zwei Tage, Donnerstag und Freitag plus vier Tage, Sonnabend plus drei Tage.