0

PHP の日付関数で少し問題が発生しました (これに関しては、ほとんど知識がありません)。

などの変数のような 3 つのパラメーターに保存された週の次の 5 日間を取得し、$month6月 4 日火曜日に表示$dayofmonth$dayofweekて、対応する html div 要素内に日付の各部分を配置できるようにします。

過去 2 日間、さまざまなコードを試してみましたが、どれもうまくいきませんでした。3 時間前に、月を取得する方法では、名前が変わるため、月末に競合が発生するという結論に達しました。つまり、5 月 31 日金曜日、5 月 1 日土曜日、5 月 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 の選択で簡単に使用できる別の変数の日付のすべての部分が必要です。

4

4 に答える 4

1

これを実現する 1 つの方法は、 DatePeriodを使用することです。DatePeriod のインスタンスは反復可能であるため、foreach ループで使用できます。

// 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 はしばしば見過ごされてしまいます。

于 2013-06-03T23:00:11.160 に答える
0

関数だけでなく、DateTimeオブジェクトを使用しdate()ます。あなたが何を望んでいるかを正しく理解していれば、これを行うことができます:

$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.
}
于 2013-06-03T22:40:23.687 に答える
0

「過去2日間、さまざまなコードで実験する」前に読んでおくべきドキュメントによると、次のようなものを使用して、変数をまったく使用せずに必要な日付を簡単に取得できます。

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

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

于 2013-06-03T22:41:12.660 に答える
-1

以下に、2013 年のすべての日を、日、月、週を div で区切って、必要な形式で出力する簡単なプログラムを添付します。

フォーマットされた日付を印刷する多くの方法を理解するために、日付形式を参照することをお勧めします。

<?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 "<br>";

    $inicio->add(new DateInterval('P1D')); // sums 1 day in date

}


?>
于 2013-06-03T23:05:34.013 に答える