2009-11-16 5 views
0

J'ai une situation simple où j'ai un numéro de semaine X fourni par l'utilisateur, et j'ai besoin de trouver la date du lundi de cette semaine (par exemple 12 Décembre). Comment pourrais-je y parvenir? Je connais l'année et la semaine.Découvrez la date du lundi de la semaine en PHP?

Répondre

7

Certains code basé principalement sur les propositions précédentes:

$predefinedYear = 2009; 
$predefinedWeeks = 47; 

// find first mоnday of the year 
$firstMon = strtotime("mon jan {$predefinedYear}"); 

// calculate how much weeks to add 
$weeksOffset = $predefinedWeeks - date('W', $firstMon); 

// calculate searched monday 
$searchedMon = strtotime("+{$weeksOffset} week " . date('Y-m-d', $firstMon)); 
1

Une idée pour vous aider à démarrer:

  • prennent premier jour de l'année
  • ajouter 7 * X jours
  • utilisation StrToDate, en passant "lundi dernier" et la date calculée ci-dessus.

Peut-être ajouter un jour à ce qui précède.

Selon la manière dont vous calculez les numéros de semaine et le début de la semaine, cela peut parfois être le cas. (c'est-à-dire si le lundi de la première semaine de l'année était réellement l'année précédente!)

TESTEZ-VOUS COMPLÈTEMENT - mais j'ai utilisé une approche similaire pour des calculs similaires dans le passé.

0

En raison de la restriction de la réputation je ne peux pas poster des liens multiples pour plus de détails vérifier

http://php.net/manual/en/function.date.php et http://php.net/manual/en/function.mktime.php

vous pouvez utiliser quelque chose comme ceci: utiliser mktime pour obtenir un horodatage de la semaine: timbre $ = mktime (0,0,0,0, < 7 * x>,) {utilisé quelque chose de similaire il y a quelques années, donc je ne suis pas sûr que cela fonctionne comme ceci} et ensuite utiliser $ wDay = date ('N' , $ timbre). Vous avez maintenant le jour de la semaine, l'horodateur du lundi doit être

mktime (0,0,0,0, < 7 * x> - $ wDay + 1,) {le paramètre 'N' renvoie 1 pour le lundi 6 pour dimanche}

espérons que cette aide

0
//To calculate 12 th Monday from this Monday(2014-04-07) 
    $n_monday=12; 
    $cur_mon=strtotime("next Monday"); 
    for($i=1;$i<=$n_monday;$i++){ 
     echo date('Y-m-d', $cur_mon); 
     $cur_mon=strtotime(date('Y-m-d', strtotime("next Monday",$cur_mon))); 
    } 

eteint

2014-04-07 
2014-04-14 
2014-04-21 
2014-04-28 
2014-05-05 
2014-05-12 
2014-05-19 
2014-05-26 
2014-06-02 
2014-06-09 
2014-06-16 
2014-06-23 
Questions connexes