Праблемы з датай PHP

Я сутыкнуўся трохі праблемы з функцыяй даты PHP (у мяне амаль 0 веды, калі справа даходзіць да гэтага).

Я хачу, каб у бліжэйшыя 5 дзён на тыдзень, захаванага ў 3 параметру як зменныя, такія як $ месяц , $ DayOfMonth і $ дзень тыдня і які мае яна адлюстроўваецца 4 чэрвеня субота, кожная частка даты, каб быць у стане змясціць унутр яго coresponding HTML элементаў DIV.

Я эксперыментаваў на працягу апошніх 2-х дзён з рознымі кодамі, але ніхто не працаваў, і 3 гадзіны назад я прыйшоў да высновы, што, як я атрымліваю месяц, я б канфлікт у канцы месяца, таму што змены імя. Так што я б быў 31 мая пятніцы, 1 Маі Субота, 2 Травень нядзелю і г.д.

Што ў мяне ёсць цяпер, я думаю, што я выправіў праблему з канца месяца.

$month = date("F");
$day_1 = date("j");
$day_2 = date("j", strtotime("+1 days"));
$day_3 = date("j", strtotime("+2 days"));
$day_4 = date("j", strtotime("+3 days"));
$day_5 = date("j", strtotime("+4 days"));
$wday_1 = date("l");
$wday_2 = date("l", strtotime("+1 weekday"));
$wday_3 = date("l", strtotime("+1 weekday"));
$wday_4 = date("l", strtotime("+1 weekday"));
$wday_5 = date("l", strtotime("+1 weekday"));
$next_month = date("F", strtotime("+1 month"));
echo $day_1." ".$wday_1." ";
if($day_1 == 28 || $day_1 == 29 || $day_1 == 30 || $day_1 == 31 || $day_2 == 28 || $day_2 == 29 || $day_2 == 30 || $day_2 == 31 ||
$day_3 == 28 || $day_3 == 29 || $day_3 == 30 || $day_3 == 31 || $day_4 == 28 || $day_4 == 29 || $day_4 == 30 || $day_4 == 31 ||
$day_5 == 28 || $day_5 == 29 || $day_5 == 30 || $day_5 == 31) { $month = $next_month; }
echo $month;

Я прачытаў дакументацыю пра дату, але мне трэба кожную частку даты ў іншай зменнай, якая можа быць лёгка выкарыстаны ў зменах лакалізацыі і выбірае SQL.

0
Вы павінны паказаць нам свой код. Там вельмі просты спосаб зрабіць тое, што вы апісваеце, калі толькі вы былі б больш канкрэтна аб тым, што ёсць і тое, што вы ўжо спрабавалі.
дададзена аўтар Leng, крыніца
Вы спрабавалі выкарыстаць StrToTime ( '+ -дни'); , змена 1 да таго, што сума, якую неабходна?
дададзена аўтар BLaZuRE, крыніца
Вы спрабавалі выкарыстаць StrToTime ( '+ -дни'); , змена 1 да таго, што сума, якую неабходна?
дададзена аўтар BLaZuRE, крыніца
У гэты момант я не маю больш коды, я ўжо пачаў з нуля, я выкладу, калі я нешта зрабіць, што, як правіла, некалькі працаваць так, як гэта павінна быць. ~ 20/30 хвілін
дададзена аўтар Alex Irhazi, крыніца
У гэты момант я не маю больш коды, я ўжо пачаў з нуля, я выкладу, калі я нешта зрабіць, што, як правіла, некалькі працаваць так, як гэта павінна быць. ~ 20/30 хвілін
дададзена аўтар Alex Irhazi, крыніца

8 адказы

FOLLOWS прыкладаецца простая праграма, якая друкуе ўсе дні 2013 года ў фармаце, які вы хочаце, з дзень, месяц і тыдзень, падзеленых дзівы ..

Я раю вам паглядзець фармат даты , каб зразумець многія спосабы друку formmated даты ,

<?php

$inicio = new DateTime();
$inicio->setDate(2013, 1, 1);


$fim = new DateTime();
$fim->setDate(2014, 1, 1);

while($inicio < $fim)
{


    echo "<div>";
    echo $inicio->format("M"); 
    echo "</div>";

    echo "<div>";
    echo $inicio->format("j");
    echo "</div>";

    echo "<div>";
    echo $inicio->format("l");
    echo "</div>";

    echo "
"; $inicio->add(new DateInterval('P1D'));//sums 1 day in date } ?>
1
дададзена
Дзякуй, з кодам я вырашыў змяніць асноўны код і ператварыць яго ў каляндар тыпу бакавой прагорткі з усім у ім, і я зраблю гэта перайсці да бягучай даце з дапамогай JavaScript.
дададзена аўтар Alex Irhazi, крыніца

FOLLOWS прыкладаецца простая праграма, якая друкуе ўсе дні 2013 года ў фармаце, які вы хочаце, з дзень, месяц і тыдзень, падзеленых дзівы ..

Я раю вам паглядзець фармат даты , каб зразумець многія спосабы друку formmated даты ,

<?php

$inicio = new DateTime();
$inicio->setDate(2013, 1, 1);


$fim = new DateTime();
$fim->setDate(2014, 1, 1);

while($inicio < $fim)
{


    echo "<div>";
    echo $inicio->format("M"); 
    echo "</div>";

    echo "<div>";
    echo $inicio->format("j");
    echo "</div>";

    echo "<div>";
    echo $inicio->format("l");
    echo "</div>";

    echo "
"; $inicio->add(new DateInterval('P1D'));//sums 1 day in date } ?>
1
дададзена
Дзякуй, з кодам я вырашыў змяніць асноўны код і ператварыць яго ў каляндар тыпу бакавой прагорткі з усім у ім, і я зраблю гэта перайсці да бягучай даце з дапамогай JavaScript.
дададзена аўтар Alex Irhazi, крыніца

Адным са спосабаў дасягнення гэтай мэты з'яўляецца выкарыстанне DatePeriod ; асобнікі DatePeriod з'яўляюцца ітэрацый, так што вы можаце выкарыстоўваць іх у цыкле прагляду.

// a date period starting today spanning 5 days and separated into 1 day segments
$period = new \DatePeriod(new \DateTime(), new \DateInterval('P1D'), 4);
foreach ($period as $day) {
  echo $day->format('F j l');
}

Гэта можа быць трохі залішнім за тое, што вы хочаце зрабіць, але DatePeriods часта забываюць што сумна, таму што яны могуць быць вельмі зручна.

1
дададзена

Адным са спосабаў дасягнення гэтай мэты з'яўляецца выкарыстанне DatePeriod ; асобнікі DatePeriod з'яўляюцца ітэрацый, так што вы можаце выкарыстоўваць іх у цыкле прагляду.

// a date period starting today spanning 5 days and separated into 1 day segments
$period = new \DatePeriod(new \DateTime(), new \DateInterval('P1D'), 4);
foreach ($period as $day) {
  echo $day->format('F j l');
}

Гэта можа быць трохі залішнім за тое, што вы хочаце зрабіць, але DatePeriods часта забываюць што сумна, таму што яны могуць быць вельмі зручна.

1
дададзена

Згодна дакументацыі вы павінны прачытаць , перш чым «эксперыментуюць на працягу апошніх 2-х дзён з розныя коды », вы можаце проста атрымаць даты вам трэба без якіх-небудзь зменных бы там ні было выкарыстоўваць нешта накшталт гэтага:

for($i = 1; $i <= 5; $i++) {
    date("F j l", strtotime("+".$i." days"));
}

http://php.net/manual/en/function.strtotime.php

0
дададзена

Згодна дакументацыі вы павінны прачытаць , перш чым «эксперыментуюць на працягу апошніх 2-х дзён з розныя коды », вы можаце проста атрымаць даты вам трэба без якіх-небудзь зменных бы там ні было выкарыстоўваць нешта накшталт гэтага:

for($i = 1; $i <= 5; $i++) {
    date("F j l", strtotime("+".$i." days"));
}

http://php.net/manual/en/function.strtotime.php

0
дададзена

Выкарыстоўвайце DateTime аб'ектаў, а не толькі ў даце() функцыя. Калі я правільна разумею, што вы хочаце, вы можаце проста зрабіць гэта:

$date = new DateTime();
for ($i = 0; $i < 5; ++$i) {
    echo $date->format('F j l');//Month, day of month, day of week
    $date->modify('+1 day');//this will change the timestamp stored in
                            //the DateTime object accordingly.
}
0
дададзена

Выкарыстоўвайце DateTime аб'ектаў, а не толькі ў даце() функцыя. Калі я правільна разумею, што вы хочаце, вы можаце проста зрабіць гэта:

$date = new DateTime();
for ($i = 0; $i < 5; ++$i) {
    echo $date->format('F j l');//Month, day of month, day of week
    $date->modify('+1 day');//this will change the timestamp stored in
                            //the DateTime object accordingly.
}
0
дададзена