Получить дату следующего понедельника, вторника и т. д


Я хотел бы найти штамп даты понедельника, вторника, среды и т. д. Если этот день еще не наступил на этой неделе, я хотел бы, чтобы дата была на этой неделе, иначе, на следующей неделе. Спасибо!

9 58

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()