2011-08-09 3 views
2

Je dois changer le jour d'expédition à mardi prochain si le jour est vendredi.Voici mon code.PHP Check Journée particulière

$tomorrow = mktime(0,0,0,date("m"),date("d")+$tt+1,date("Y")); 
$duedate = date("d - M D", $tomorrow); 
$str = substr($duedate, 9, 11); 
$fri='Fri'; 
$sat='Sat'; 
if(strcmp($str,$fri)==0) 
{ 
$tomorrow = mktime(0,0,0,date("m"),date("d")+4,date("Y")); 
$duedate = date("d - M D", $tomorrow); 
} 

Mais je pense que si la boucle ne contrôle pas vendredi correctly.So ajoutant 4-$tommorrow est pas non plus des pointeurs working.Any?

Répondre

2
$tomorrow = mktime(0,0,0,date("m"),date("d")+$tt+1,date("Y")); 
$duedate = date("d - M D", $tomorrow); 
if (date("N", $tomorrow) == 5) { 
    $tomorrow = mktime(0,0,0,date("m"),date("d")+4,date("Y")); 
    $duedate = date("d - M D", $tomorrow); 
} 
3

Cela devrait être suffisant:

if (date('N') == 5) { 
    //set duedate to next Tuesday 
    $DateTime = new DateTime('now'); 
    $DateTime->add(new DateInterval('P4D')); //add 4 days 
    $dueDate = $DateTime->format('your format'); 
} 

N rend un numéro normalisé ISO qui est 5 pour vendredi. La date n'a pas besoin de second argument, dans ce cas, elle prend l'horodatage actuel. Pour plus d'informations sur DateTime, voir.

1

essayer d'abord extraire le jour juste en utilisant la fonction de la date, par exemple:

date('D'); // Mon through Sun 

ou

date('N'); // 1 (for Monday) through 7 (for Sunday) 

utiliser Deuxièmement la fonction strtotime pour ajouter des jours à une date, par exemple :

strtotime("+4 day",$date); // Add 4 days to date 
1
$nextTuesday = strtotime('next tuesday');