Получить дату следующего понедельника, вторника и т. д
Я хотел бы найти штамп даты понедельника, вторника, среды и т. д. Если этот день еще не наступил на этой неделе, я хотел бы, чтобы дата была на этой неделе, иначе, на следующей неделе. Спасибо!
9 ответов:
посмотреть
strtotime()
strtotime('next tuesday');
вы могли бы, вероятно, узнать, если вы прошли мимо этого дня, глядя на номер недели:
$nextTuesday = strtotime('next tuesday'); $weekNo = date('W'); $weekNoNextTuesday = date('W', $nextTuesday); if ($weekNoNextTuesday != $weekNo) { //past tuesday }
Я знаю, что это немного поздний ответ, но я хотел бы добавить свой ответ для будущих ссылок.
// Create a new DateTime object $date = new DateTime(); // Modify the date it contains $date->modify('next monday'); // Output echo $date->format('Y-m-d');
приятно то, что вы также можете сделать это с датами, отличными от сегодняшнего дня:
// 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');
сделать выбор:
$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 />"; }
ссылки
руководство PHP - DateTime
руководство PHP -DateInterval
руководство PHP -DatePeriod
руководство PHP - клон
вопрос помечен " php " так как Том сказал, способ сделать это будет выглядеть так:
date('Y-m-d', strtotime('next tuesday'));
Извините, я не заметил тег PHP-однако кто-то еще может быть заинтересован в решении 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
Если я правильно вас понял, вы хотите даты следующих 7 дней?
вы можете сделать следующее:
for ($i = 0; $i < 7; $i++) echo date('d/m/y', time() + 86400 * $i);
проверьте документацию для функции даты для формата, в котором вы хотите его использовать.
Если вы хотите найти понедельник, то "dayOfWeek" - это 1, если это вторник, это будет 2 и так далее.
var date=new Date(); getNextDayOfWeek(date, 2);
// это для поиска в следующий вторник
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; }
надеюсь, что это будет полезно для вас, спасибо
The PHP документация для time () показывает пример, как можно получить дату на одну неделю. Вы можете изменить это, чтобы вместо этого перейти в цикл, который повторяется максимум 7 раз, получить метку времени каждый раз, получить соответствующую дату, и от этого получить день недели.
можно использовать библиотека.
пример: на следующей неделе в пятницу
Carbon::parse("friday next week");
PHP 7.1:
$next_date = new DateTime('next Thursday'); $stamp = $next_date->getTimestamp();
PHP manual getTimestamp()