2010-11-29 19 views
0

J'ai des difficultés à ajuster une plage de semaine en PHP.
Je l'ai travaillé pour montrer la semaine de travail en cours à partir de lundi.
Donc pour cette semaine, il montre 29/11/2010 - 12/03/2010.Obtenez une plage de dates couvrant 2 semaines à partir du lundi

J'ai besoin de modifier cela pour commencer à partir du lundi de la semaine de travail en cours et de la date de fin et de fin des deux vendredis du lundi. Par exemple, actuellement, il afficherait une date de début du 29/11/2010 et une date de fin du 12/10/2010.

Voici mon code

<? 
$timestamp = time(); 
echo date("m/d/Y", strtotime("this monday", $timestamp)); 
echo " - "; 
echo date("m/d/Y", strtotime("Next Friday", $timestamp)); 
?> 

Comment puis-je ajouter 7 à "Vendredi prochain"

thx

Répondre

1

Vous ne pouvez pas utiliser this monday pour construire le temps de la date,
comme il est allé passer lundi, il revenir lundi prochain

voici ma suggestion

<? 
$current_wkday = date('N', time()); 
switch ($current_wkday) 
{ 
    /* assuming on sunday, get next monday */ 
    case 0: $this_monday = strtotime('+1 day'); break; 
    case 1: $this_monday = time(); break; 
    default: $this_monday = strtotime('-'.($current_wkday-1).'day'); break; 
} 

echo date("m/d/Y", $this_monday); /* 11days = 7+(5-1) */ 
echo " - "; 
echo date("m/d/Y", $this_monday+(86400*11)); 
?> 
+0

Le commentaire de Drew ci-dessous a fonctionné, mais comme vous l'avez dit car aujourd'hui c'est mardi. Quand le lundi suivant arrive, il aurait poussé la date de fin une autre semaine, au lieu de rester dans la même gamme. Je crois que le vôtre est la solution complète, et je l'apprécie. Je l'ai étudié et en ai compris la plupart. Je ne vois pas comment la section du milieu fonctionne. Si vous le voyez à nouveau, et que j'aurais le temps j'apprécierais l'explication. Je vous remercie! –

+0

@Dirty Bird Design - La partie du milieu est à supposer si la date actuelle est lundi, ** ce lundi ** est aujourd'hui. Si la date actuelle est dimanche, en supposant, vous devrez utiliser +1 jour pour ** ce lundi ** à la place. Dans le cas contraire, toute journée passée lundi est la même que current_weekday-1 (comme mardi, pour obtenir ce lundi, est -1, mercredi est -2, etc.) – ajreal

1

Au lieu de faire strtotime("Next Friday", $timestamp)strtotime("Next Friday", $timestamp) + 60*60*24*7 (ajouter le nombre de secondes dans une semaine) .

+0

va pas recommencer le deuxième lundi lieu de rester dans la gamme originale de 2 semaines? –

+0

@Dirty Bird Design: Je n'étais concerné que par la question: Comment ajouter +7 à "Vendredi prochain". Je n'ai pas testé autre chose :-) – cambraca

1

viens juste de réaliser que « précédent lundi » ne fonctionne que le jour en cours est mardi ou plus tard ... mais c'est un point de départ pour vous ..

<?php 
    $monday = date('m/d/Y', strtotime("previous monday")); 
    $friday = date('m/d/Y', strtotime($monday . " + 11 days")); 
    echo $monday . ' - ' . $friday ; 
?> 
+0

Drew - merci mec, c'était un bon point de départ, en fait, tout ce que j'ai fait, c'était de changer "lundi précédent" pour "ce lundi". Cela semble fonctionner, mais je garde un œil dessus. –