2010-12-14 78 views
13

Possible en double:
Get first day of week in PHP?Trouver Premier jour de la semaine via php

Salut,

Je veux trouver la première et la dernière date de la semaine en cours et la semaine dernière. De même, je veux trouver la première et la dernière date du mois en cours et le mois dernier.

Ceci doit être fait en PHP. S'il vous plaît aider.

+0

Voir aussi: http://stackoverflow.com/questions/1897727/get-first -day-of-week-in-php –

+3

* (référence) * [Formats de date relatifs en PHP] (http://de2.php.net/manual/fr/datetime.formats.relative.php) – Gordon

Répondre

42

strtotime est assez puissant avec relative time formats:

strtotime('monday this week'); 
strtotime('sunday this week'); 
strtotime('monday last week'); 
strtotime('sunday last week'); 

(fonctionne uniquement avec PHP 5.3+)

strtotime('first day of this month'); 
strtotime('last day of this month'); 
strtotime('first day of last month'); 
strtotime('last day of last month'); 

Afin d'obtenir la première et la dernière date d'un mois en PHP < 5.3, vous pouvez utiliser une combinaison de mktime et date (date('t') donne le nombre de jours du mois):

mktime(0,0,0,null, 1); // gives first day of current month 
mktime(0,0,0,null, date('t')); // gives last day of current month 

$lastMonth = strtotime('last month'); 
mktime(0,0,0,date('n', $lastMonth), 1); // gives first day of last month 
mktime(0,0,0,date('n', $lastMonth), date('t', $lastMonth); // gives last day of last month 

Si vous voulez juste pour obtenir une chaîne pour la présentation, alors vous n'avez pas besoin mktime:

date('Y-m-1'); // first day current month 
date('Y-m-t'); // last day current month 
date('Y-m-1', strtotime('last month')); // first day last month 
date('Y-m-t', strtotime('last month')); // last day last month 
+0

Vous avez fourni une excellente solution Mais malheureusement, cela ne fonctionne que sur PHP5.3 pas en 5.2. J'ai PHP 5.2.14. Et cela n'a pas fonctionné! –

+1

@ user365870: Vrai, il n'est documenté nulle part, je viens de le lire dans le commentaire de la page .... de toute façon, voir ma réponse mise à jour. –

+0

Merci! Cela a fonctionné parfaitement. Merci beaucoup. –

3

est ici une fonction pour le premier et le dernier jour de la semaine:

function week_start_date($wk_num, $yr, $first = 1, $format = 'F d, Y') 
{ 
    $wk_ts = strtotime('+' . $wk_num . ' weeks', strtotime($yr . '0101')); 
    $mon_ts = strtotime('-' . date('w', $wk_ts) + $first . ' days', $wk_ts); 
    return date($format, $mon_ts); 
} 

$sStartDate = week_start_date($week_number, $year); 
$sEndDate = date('F d, Y', strtotime('+6 days', strtotime($sStartDate))); 

Il peut probablement être adapté pour faire le mois aussi bien, mais je voulais obtenir ma réponse! :)

+0

J'ai effectivement trouvé le post de forum qu'il référence par googling sur mon propre, merci :) ... n'a même pas vu sa réponse de cet autre fil de stackoverflow ... – prilldev

+0

Ok, alors je retire mon commentaire :) –

+0

Cela a fonctionné aussi pour moi. Merci –