Gibt es eine Möglichkeit, strtotime
zu verwenden, um Arbeitstage (Montag bis Freitag) zu einem Datum hinzuzufügen? Oder eine andere Methode? Was ich tun möchte, ist:Arbeitstage (Mo-Fr) in PHP
date ('Y-m-j' , strtotime ('+3 working days'))
Gibt es eine Möglichkeit, strtotime
zu verwenden, um Arbeitstage (Montag bis Freitag) zu einem Datum hinzuzufügen? Oder eine andere Methode? Was ich tun möchte, ist:Arbeitstage (Mo-Fr) in PHP
date ('Y-m-j' , strtotime ('+3 working days'))
Wenn Sie auf Wochentage beschränken verwenden Sie die Zeichenfolge Wochentage.
echo date ('Y-m-j' , strtotime ('3 weekdays'));
Dies sollte Sie um 3 Wochentage voraus springen, wenn es also Donnerstag ist, wird es die zusätzliche Wochenendzeit hinzufügen.
Quelle: http://www.php.net/manual/en/datetime.formats.relative.php
Nein * weg. * Das funktioniert? Gibt es etwas, das 'strtotime()' nicht kann? –
@Pekka Ich habe gelegentlich durch seine Unfähigkeit Dinge wie "der erste Tag des Monats vor 10 Monaten" und "der erste Tag dieses Monats" geschraubt bekommen. – Yahel
Es funktioniert aber fehlerhaft: 'Echo-Datum ('Y-m-d', strtotime ('2011-03-27 + 5 Wochentage'));' Voraussichtlich 1. April, erhielt 3. April. – zerkms
ich diesen Buggy gefunden zu haben, wenn eine größere Menge an Wochentagen zu benötigen. Ich habe nach X Tagen nach dem 1. des aktuellen Monats gesucht.
Sah zuerst gut aus, nachdem> 5 Werktage hinzugefügt wurden (ähnlich wie @zerkms).
Dies hat sich für mich als genauer erwiesen.
function _getBusinessDayOfMonth($days) {
$time = strtotime(date("m/1/Y 00:00")); //finding # of business days after 1st of the month
$i = 0; //start with zero
while ($i < $days) { //loop through until reached the amount of weekdays
$time = strtotime("+1 day", $time); //Increase day by 1
if (date("N", $time) < 6) { //test if M-F
$i++; //Increase by 1
}
}
echo date("m/d/Y", $time);
}
denke ich, eine Funktion kann leicht entwickelt werden, dass Sie gerade aktuellen Tag keine der Woche exportieren und Sie können zwei und mod von 5 hinzufügen, werden Sie leicht Wochentag geben.
Und Sie können den Wochentag-Namen exportieren, indem Sie ein Array verwenden, diese Methode kann alternativ verwendet werden.
ich es rekursiv tun, arbeitete für mich
function add_work_days($date, $day){
if($day == 0)
return $date;
$date->add(new DateInterval('P1D'));
if(!in_array($date->format('N'), array('6', '7')))
$day--;
return add_work_days($date, $day);
}
$date = add_work_days(new DateTime(), 3);
echo $date->format('d/m/Y');
Für ältere Versionen von PHP < 5,3
function AddWorkingDays($startDate, $adddays)
{
$retdate = $startDate;
$sign = "+";
if($adddays < 0){
$adddays = $adddays*-1;
$sign = "-";
}
while ($adddays > 0) {
$retdate = date ('Y-m-d' , strtotime ("$retdate {$sign}1 day"));
$what_day = date("N", strtotime($retdate));
if ($what_day != 6 && $what_day != 7) // 6 and 7 are weekend
$adddays--;
};
return $retdate;
}
In einigen Ländern des Mittleren Ostens ein Wochenende eine Arbeitswoche von Sonntag bis Donnerstag ist. Habt ihr darüber nachgedacht: O –
Das ist zum Ausarbeiten wie viele Tage in der Zukunft die Zahlungsfrist für ein lokales Event ist, also nein :-) – fredley
Man muss auch an Ferien denken. – yvoyer