Lieferzeiten in PHP

Aufgrund aktueller Aufgabenstellung, hier ein Codeschnipsel der das aktuelle (Bestell-) Datum als Grundlage nimmt, um das Lieferdatum einer Bestellung vorherzusagen.

<?php

// new date/time object
$date = new DateTime('now');
// set order time to a Saturday, 2 pm
$date->modify('next sat 14:00');

// orders are taken in till 15 minutes before 2pm
// http://php.net/manual/de/datetime.formats.relative.php
$order_till = new DateTime('front of 14');

// preserve original date
$date_min = clone $date;

// use interval
//$date_min->add(new DateInterval("P1D"));

// orders after 1:45 pm are getting shipped the next day
if($date > $order_till)
{
  $date_min->modify('1 weekdays');
}

// if it's on a weekend then it gets shipped on monday
if($date_min->format('N') >= 6){
  $date_min->modify('next monday');
}

// add delivery time
$date_min->modify('3 weekdays');

var_dump('Ordered:',  $date->format('l jS \of F Y H:i:s'));
var_dump('Delivery:', $date_min->format('l jS \of F Y H:i:s'));

Ich benutze die PHP DateTime Klasse und relative Datumsangaben

  • Bestelldatum wird geprüft ob bis 13:45 Uhr front of 14 bestellt wurde
    • wenn ja geht die Bestellung noch raus
    • wenn nein, dann am nächsten Tag 1 days
  • Ist das Datum jedoch ein Samstag oder Sonntag, dann wird erst am nächsten Montag verschickt next monday
  • Und dann nochmal 3 days für die Auslieferung addiert

Das wars.