Я ищу надежный способ вернуть полную дату указанного рабочего дня (например, «Mon») на текущую неделю.
С сегодняшнего дня среда, 13 июня 2012 года, я ожидал <?php echo date("Ymd", strtotime('Mon this week')); ?>
<?php echo date("Ymd", strtotime('Mon this week')); ?>
в результате в 2012-06-11
, но вместо этого php возвращает 2012-06-18
как если бы он интерпретировал эту неделю как значение на следующей неделе . Почему это поведение и что я должен делать?
Благодарю.
–Джефф
date( 'Ym-d', strtotime( 'last Monday', strtotime( 'Sunday' ) ) );
Это ищет понедельник до следующего воскресенья.
В соответствии с документацией относительно форматов даты .
Затем в Monday this week
сначала перейдет на next Monday
а затем обработает относительный текст this week
.
dayname : переход на следующий день этого имени, если он не является текущим днем, тогда он не будет продвигаться вперед. Другими словами, если текущая дата была 11 июня, то strtotime('Monday this week')
вернется 11 июня, тогда как если текущая дата была 13 июня, то strtotime('Monday this week')
вернется 19 июня.
я думаю, что это решение вашей проблемы:
$monday_date = date("Ymd", mktime(0,0,0, date("m"), date("j")-(date("w")+1), date("Y")));