Я хотел бы найти штамп даты в понедельник, вторник, среду и т. Д. Если этот день еще не наступил на этой неделе, мне хотелось бы, чтобы дата была на этой неделе, иначе, на следующей неделе. Благодаря!
См. 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('Ym-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('Ym-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('Ym-d')."<br />"; }
Руководство PHP – DateTime
Руководство PHP – DateInterval
Руководство PHP – DatePeriod
Руководство PHP – клон
Вопрос помечен как «php», как сказал Том, способ сделать это будет выглядеть так:
date('Ym-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; }
Надеюсь, это будет полезно для вас, спасибо
Документация PHP для time () показывает пример того, как вы можете получить дату на одну неделю. Вы можете изменить это, чтобы вместо этого перейти в цикл, который выполняет итерацию максимум 7 раз, каждый раз получает временную метку, получает соответствующую дату и получает день недели.