Форумы портала PHP.SU » » Вопросы новичков » Как получить начало каждой второй недели?

Страниц (1): [1]
 

1. livote - 06 Июля, 2018 - 17:34:36 - перейти к сообщению
Если просто для начала недели, то использую

А тут непонятно.
2. suvidj3316 - 10 Июля, 2018 - 07:31:54 - перейти к сообщению
Так пробовал?

PHP:
скопировать код в буфер обмена
  1.  
  2. curYear = date('Y');
  3.         $startDate = new DateTime(date('Y-m-d', strtotime('mon jan' . $curYear)));
  4.         $startDate->add(new DateInterval('P7D'));
  5.     $period = new DatePeriod($startDate, new DateInterval('P14D'), new DateTime($curYear+1 . '-01-01') );
  6.     foreach ($period as $key => $value) {
  7.     echo $value->format('d-M-Y') . '<br />';
  8.     }
  9.  
3. Мелкий - 10 Июля, 2018 - 10:41:06 - перейти к сообщению
suvidj3316 пишет:
new DateTime(date('Y-m-d', strtotime('mon jan' . $curYear)));

У strtotime и конструктора datetime один и тот же парсер. Так что можно выкинуть лишнее:
PHP:
скопировать код в буфер обмена
  1. new DateTime('mon jan' . $curYear);


А вообще задача не очень понятная. Может быть нужно и что-то вроде:
PHP:
скопировать код в буфер обмена
  1. $date = new datetime('Monday this week');
  2. if ($date->format('W') % 2 == 1) {
  3.     $date->add(new DateInterval('P7D'));
  4.     }
4. Vladimir Kheifets - 10 Июля, 2018 - 11:07:59 - перейти к сообщению
livote пишет:
Если просто для начала недели, то использую

А тут непонятно.

Добрый день!
Дествительно "тут непонятно"... в смысле "машины времени"....
Попробуйте два варианта: задётся желаемое количество понедельников начиня с текущего или задаётся ограничивающая дата
Спойлер (Отобразить)
Удачи!
5. suvidj3316 - 10 Июля, 2018 - 15:15:21 - перейти к сообщению
Также - если нужно отображение месяца на русском

PHP:
скопировать код в буфер обмена
  1.  
  2. formatter = new IntlDateFormatter('ru_RU', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
  3.  $formatter->setPattern('E d MMMM yyyy');
  4.         $curYear = date('Y');
  5.         $startDate = new DateTime('mon jan' . $curYear);
  6.         $startDate->add(new DateInterval('P7D'));
  7.     $period = new DatePeriod($startDate, new DateInterval('P14D'), new DateTime($curYear+1 . '-01-01') );
  8.     foreach ($period as $key => $value) {
  9.     echo $formatter->format($value) . '<br />';
  10.     }
  11.  
6. haveFun - 13 Июля, 2018 - 17:53:08 - перейти к сообщению
при создании нового объекта, добавляйте обратный слеш.
(new \DateTime())
так, на всякий случай

 

Powered by ExBB FM 1.0 RC1