Я хотел бы найти штамп даты в понедельник, вторник, среду и т.д. Если этот день еще не наступил на этой неделе, мне хотелось бы, чтобы дата была на этой неделе, иначе, на следующей неделе. Спасибо!
Получить дату следующего понедельника, вторник и т.д.
Ответ 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 раз, каждый раз получает временную метку, получает соответствующую дату и получает день недели.