2015-04-17 11 views
9

Oggi è venerdì 17 aprile 2015. Nella mia app, ha generato automaticamente una "data di scadenza" per ciascun incarico. È impostato su "5 giorni lavorativi". Per realizzare questo, usiamo:PHP incrementale di strtot nei giorni feriali

date('m/d/Y', strtotime("+5 weekdays")); 

Tuttavia, oggi, questa uscita "26/04/2015". Perché? Questa è una domenica. Perché non mi dà il 24, che è quello che voglio?

DEMO: http://codepad.org/2wvnypOC

P.S. Dopo aver parlato con il mio capo, siamo passati a strtotime("+5 days"), ma sono ancora curioso di sapere cosa c'è che non va con "weekdays".

+1

versione di PHP? Hai visto bugs.php.net? "Sunday" è la parte che suggerisce il vecchio bug .... https: //bugs.php.net/bug.php? Id = 61642 – ficuscr

+1

Versione PHP 5.4.38. Il mio pensiero originale era un problema di fuso orario. –

+7

[Bug # 61642 \t modifica ("+ 5 giorni lavorativi") restituisce domenica] (https://bugs.php.net/bug.php?id=61642) – salathe

risposta

4

È un bug.

È stato risolto in> = 5.5.0.

Quindi dovrai aggirare il problema o aggiornare la tua versione di php.

<?php 
$today = strtotime('2015-04-17 00:00:00'); 

echo date('m/d/Y', strtotime("+5 weekdays", $today)); 
echo "\n"; 
echo phpversion(); 
?> 

Working in 5.6*

+0

Interessante. [Evidentemente] (http://3v4l.org/Kjopg) è stato corretto in PHP 5.5.0. – amphetamachine