2009-09-28 8 views
6

Comment puis-je obtenir le dimanche et le samedi de la semaine avec une date précise?PHP: Comment obtenir dimanche et samedi une entrée de date?

Par exemple:

entrée

: lundi, 28 Septembre, 2009

sortie doit être:

dimanche, 27 Septembre, 2009 00h00 - Samedi 3 Octobre, 2009 23:59

Je pense à l'aide de la date, strtotime, mktime et time fonctions php.

Si vous avez une fonction utilisable alors c'est aussi bien pour moi.

Merci à l'avance :)

Cheers, Mark

Répondre

16

Vous utilisez strtotime() et date():

<?php 
$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
$start = strtotime('last sunday, 12pm', $time); 
$end = strtotime('next saturday, 11:59am', $time); 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
?> 

sorties:

Input: Monday, September 28, 2009 
Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM 
+0

Merci pour cette cletus de monsieur. Je pense que c'est très lisible et plus facile à utiliser à mon avis :) – marknt15

3

jeter un oeil à strtotime

à savoir

strtotime('next sunday', strtotime($your_date_string)); 
0

strtotime

$input = strtotime("Monday, September 28, 2009"); 
$nextSunday = strtotime("next Sunday",$input); 
0
<?php 

$date = strtotime('Monday, September 28, 2009 - 1 day'); 
$initialString = date('l, F d, Y g:i A', $date); 
$end = date('l, F d, Y g:i A', strtotime('next saturday 11:59 pm', $date)); 

echo $initialString . ' - ' . $end; 

sortie: dimanche, 27 Septembre, 2009 12:00 AM - Samedi 03 Octobre, 2009 23:59

9
<?php 

date_default_timezone_set('Europe/London'); 

$datetime = new DateTime("2009-09-23 12:00:00"); 

// Saturday 
$datetime->setISODate(2009, $datetime->format("W"), 6); 
print "Saturday:" . $datetime->format(DATE_ATOM) . "\n"; 
// Sunday 
$datetime->setISODate(2009, $datetime->format("W"), 0); 
print "Sunday: " . $datetime->format(DATE_ATOM) . "\n"; 


?> 
+0

Nice, DateTime est relativement nouveau - non? –

+0

@meder: Disponible par défaut à partir de la version 5.2, sorti fin 2006. Il est disponible sur PECL pour 5.1. – Charles

1

Date d'écho ("Ymd H: i: s", strtotime ("s dernier unday ", heure()));

date d'écho ("Y-m-d H: i: s", strtotime ("next samedi", time()));

0

Voici ce que vous cherchez. C'est ce que j'utilise.

$beginningOfWeek = date('Y-m-d H:i:s', strtotime('last Sunday')); 
$endOfWeek = date('Y-m-d H:i:s', strtotime('+6 day', strtotime('last Sunday'))); 
0

Vous pouvez trouver mon Date Heure Helper beaucoup à portée de main dans ce cas, il peut finir en 3 lignes

http://normandqq.github.io/Date-Time-Helper/

$date = '2013-08-11'; 
    $monday = Model_DTHpr::getMondayByDate($date); 
    $sunday = Model_DTHpr::adjustDays("add",$monday,6); 

eteint:

2013-08-05 //Monday 
    2013-08-11 //Sunday 
1

la question avec la réponse «correcte» est, et si la date fournie est dimanche? Ensuite, il vous donnera le dimanche précédent, au lieu du dimanche en cours. Même problème avec samedi.

$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
if(date('D', $time) == "Sun"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('last sunday, 12pm', $time); 
} 
if(date('D', $time) == "Sat"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('next saturday, 12pm', $time); 
} 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
+0

Je suis venu ici à la recherche de cette nuance: les limites de mon week-end étaient fausses, à cause de ce que vous avez souligné (et je n'ai vu cela que pendant un week-end!). Y a-t-il une raison pour laquelle vous utilisez les limites de jour de 12 heures au lieu de minuit (12h)? –

+0

On dirait que j'ai peut-être copié et collé des parties de la réponse originale et apporté les changements nécessaires. À part cela, pour l'instant, je ne peux penser à aucun autre raisonnement. –

0

Get dimanche Php code:

echo "Today Is : " . date("d-m-Y"); 
$dw = date("w"); 
$dw = 7-$dw; 
echo "\nNext Sunday Is" .date('d-m-Y', strtotime("+$dw days")); 
Questions connexes