web-dev-qa-db-fra.com

Obtenez la date du prochain lundi, mardi, etc.

Je voudrais trouver le timbre à date de lundi, mardi, mercredi, etc. Si ce jour n'est pas encore venu cette semaine, je voudrais que la date soit cette semaine, sinon, la semaine prochaine. Merci!

65
Adrian Sarli

Voir strtotime()

strtotime('next tuesday');

Vous pourriez probablement savoir si vous avez dépassé ce jour en regardant le numéro de la semaine:

$nextTuesday = strtotime('next tuesday');
$weekNo = date('W');
$weekNoNextTuesday = date('W', $nextTuesday);

if ($weekNoNextTuesday != $weekNo) {
    //past tuesday
}
114
Tom Haigh

Je sais que c'est une réponse un peu tardive, mais j'aimerais ajouter ma réponse pour de futures références.

// Create a new DateTime object
$date = new DateTime();

// Modify the date it contains
$date->modify('next monday');

// Output
echo $date->format('Y-m-d');

La bonne chose est que vous pouvez également le faire avec des dates autres que celles d'aujourd'hui:

// Create a new DateTime object
$date = new DateTime('2006-05-20');

// Modify the date it contains
$date->modify('next monday');

// Output
echo $date->format('Y-m-d');

Pour faire la gamme:

$monday = new DateTime('monday');

// clone start date
$endDate = clone $monday;

// Add 7 days to start date
$endDate->modify('+7 days');

// Increase with an interval of one day
$dateInterval = new DateInterval('P1D');

$dateRange = new DatePeriod($monday, $dateInterval, $endDate);

foreach ($dateRange as $day) {
    echo $day->format('Y-m-d')."<br />";
}

Les références

Manuel PHP - DateTime

Manuel PHP - DateInterval

Manuel PHP - DatePeriod

Manuel PHP - clone

51
user4446130

La question est étiquetée "php", comme l'a dit Tom, la façon de procéder ressemblerait à ceci:

date('Y-m-d', strtotime('next tuesday'));
23
Josh Davis

Désolé, je n'ai pas remarqué la balise PHP - mais quelqu'un d'autre pourrait être intéressé par une solution VB:

Module Module1

    Sub Main()
        Dim d As Date = Now
        Dim nextFriday As Date = DateAdd(DateInterval.Weekday, DayOfWeek.Friday - d.DayOfWeek(), Now)
        Console.WriteLine("next friday is " & nextFriday)
        Console.ReadLine()
    End Sub

End Module
2
Larry Watanabe

Vous pouvez utiliser la bibliothèque Carbon.

Exemple: la semaine prochaine vendredi

Carbon::parse("friday next week");
2
Farid Movsumov

Si je vous comprends bien, vous voulez les dates des 7 prochains jours?

Vous pouvez effectuer les opérations suivantes:

for ($i = 0; $i < 7; $i++)  
  echo date('d/m/y', time() + 86400 * $i);

Consultez la documentation de la fonction de date pour le format dans lequel vous le souhaitez.

1
Mike

PHP 7.1:

$next_date = new DateTime('next Thursday');
$stamp = $next_date->getTimestamp();

Manuel PHP getTimestamp ()

1
Oksana Romaniv

si vous voulez trouver lundi alors 'dayOfWeek' est 1 si c'est mardi ce sera 2 et ainsi de suite.

var date=new Date();
getNextDayOfWeek(date, 2);

// c'est pour trouver mardi prochain

function getNextDayOfWeek(date, dayOfWeek) {
// Code to check that date and dayOfWeek are valid left as an exercise ;)

var resultDate = new Date(date.getTime());

resultDate.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);

return resultDate;
}

J'espère que cela vous sera utile, merci

1
Eann

Le documentation PHP pour time () montre un exemple de la façon dont vous pouvez obtenir une date une semaine. Vous pouvez le modifier pour aller dans une boucle qui itère un maximum de 7 fois, obtenir l'horodatage à chaque fois, obtenir la date correspondante et, à partir de là, obtenir le jour de la semaine.

0
George Jempty