PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
suvidj3316
Отправлено: 10 Июля, 2018 - 07:31:54
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2016
Помог: 0 раз(а)
Так пробовал?
PHP:
скопировать код в буфер обмена
$startDate = new DateTime
( date ( 'Y-m-d' , strtotime ( 'mon jan' . $curYear ) ) ) ; $startDate -> add ( new DateInterval( 'P7D' ) ) ;
$period = new DatePeriod( $startDate , new DateInterval( 'P14D' ) , new DateTime( $curYear + 1 . '-01-01' ) ) ;
foreach ( $period as $key => $value ) {
echo $value -> format ( 'd-M-Y' ) . '<br />' ;
}
(Отредактировано автором: 10 Июля, 2018 - 07:44:03)
Мелкий
Отправлено: 10 Июля, 2018 - 10:41:06
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
suvidj3316 пишет: new DateTime(date('Y-m-d', strtotime('mon jan' . $curYear)));
У strtotime и конструктора datetime один и тот же парсер. Так что можно выкинуть лишнее:
А вообще задача не очень понятная. Может быть нужно и что-то вроде:
PHP:
скопировать код в буфер обмена
$date = new datetime( 'Monday this week' ) ;
if ( $date -> format ( 'W' ) % 2 == 1) {
$date -> add ( new DateInterval( 'P7D' ) ) ;
}
Vladimir Kheifets
Отправлено: 10 Июля, 2018 - 11:07:59
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
livote пишет: Если просто для начала недели, то использую
А тут непонятно.
Добрый день!
Дествительно "тут непонятно"... в смысле "машины времени"....
Попробуйте два варианта: задётся желаемое количество понедельников начиня с текущего или задаётся ограничивающая датаСпойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$n = 10 ; // кол.во понедельников каждой второй недели
for ( $i = 1 ; $i <= $n ; $i ++ ) $t [ ] = strtotime ( '+14 days' , $t [ $i - 1
] ) ; foreach ( $t as $t2 ) echo date ( "l, d.m.y" , $t2 ) , "<br>" ; echo "<hr>" ;
/*
Monday, 09.07.18
Monday, 23.07.18
Monday, 06.08.18
Monday, 20.08.18
Monday, 03.09.18
Monday, 17.09.18
Monday, 01.10.18
Monday, 15.10.18
Monday, 29.10.18
Monday, 12.11.18
Monday, 26.11.18
*/
//-------------------------------------------
$t = [ ] ;
$end = strtotime ( '31.12.2018' ) ; // конец периода while ( $begin < $end )
{
$t [ ] = $begin ;
}
foreach ( $t as $t2 ) echo date ( "l, d.m.y" , $t2 ) , "<br>" ; /*
Monday, 09.07.18
Monday, 23.07.18
Monday, 06.08.18
Monday, 20.08.18
Monday, 03.09.18
Monday, 17.09.18
Monday, 01.10.18
Monday, 15.10.18
Monday, 29.10.18
Monday, 12.11.18
Monday, 26.11.18
Monday, 10.12.18
Monday, 24.12.18
*/
Удачи!(Отредактировано автором: 10 Июля, 2018 - 11:09:46)
suvidj3316
Отправлено: 10 Июля, 2018 - 15:15:21
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2016
Помог: 0 раз(а)
Также - если нужно отображение месяца на русском
PHP:
скопировать код в буфер обмена
formatter = new IntlDateFormatter( 'ru_RU' , IntlDateFormatter:: SHORT , IntlDateFormatter:: SHORT ) ;
$formatter -> setPattern ( 'E d MMMM yyyy' ) ;
$startDate = new DateTime( 'mon jan' . $curYear ) ;
$startDate -> add ( new DateInterval( 'P7D' ) ) ;
$period = new DatePeriod( $startDate , new DateInterval( 'P14D' ) , new DateTime( $curYear + 1 . '-01-01' ) ) ;
foreach ( $period as $key => $value ) {
echo $formatter -> format ( $value ) . '<br />' ;
}
(Отредактировано автором: 10 Июля, 2018 - 15:16:10)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB