Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

См. strtotime()

strtotime('next tuesday');

Возможно, вы узнали, не прошли ли вы в этот день, посмотрев номер недели:

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

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

Ответ 2

Я знаю, это немного поздний ответ, но я хотел бы добавить свой ответ для будущих ссылок.

// 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 - clone

Ответ 3

Вопрос помечен как "php", так как Том сказал, способ сделать это будет выглядеть так:

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

Ответ 4

Извините, я не заметил тег 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

Ответ 5

Если я правильно вас понимаю, вам нужны даты следующих 7 дней?

Вы можете сделать следующее:

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

Проверьте документацию для функции даты в формате, в котором вы хотите.

Ответ 6

если вы хотите найти понедельник, тогда "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;
}

Надеюсь, это будет полезно для вас, спасибо

Ответ 7

Документация PHP для времени() показывает пример того, как вы можете получить дату на одну неделю. Вы можете изменить это, чтобы вместо этого перейти в цикл, который выполняет итерацию не более 7 раз, каждый раз получает временную метку, получает соответствующую дату и получает день недели.