-1

日付を比較するコードをいくつか書きますが、ここで問題が発生しました正しい場合もあれば、間違っている場合もあります。この問題を解決するにはどうすればよいですか?

<?php
    $month = 2;
    $year = 2012;
    $saturday = strtotime('First Saturday '.date('F o', mktime(0,0,0, $month, 1, $year)));
    echo date('Y/M/d', $saturday);
    $sat1 = strtotime($saturday);
    echo "<br/>";
    $season1 = strtotime ( '+12 week' , $saturday);
    $season2= date ( 'Y/M/d' , $season1 );
    echo $season2;
    $season = strtotime($season1);
    echo "<br/>";
    $date = $_POST["date"];
    echo $date;
    $date1 = strtotime($date);
    echo "<br/>";
    $abc = strtotime ('+1 week' , $season1);
    $abc = date ('Y/M/d', $abc);
    echo "<br/>";
    echo $abc;
    $abc1 = strtotime($abc);
    if ($date1 <= $abc1)
    {
        if ($date1 <= $season)
        {
            echo "League already opened";
        }
        else if($date1 > $season)
        {
        echo "league successfully closed";
        }
    }
    else 
    {
        echo "league 1 closed"; 
    }
    if(!isset($POST['submit'])) {
?>
    <form method="post" action=" ">
        <label>enter date in YYYY/MM/DD format</label>
        <input type="text" name="date" size="10" />
        <input type="submit" value="submit" name="submit">
    </form>
<?
    }
?>

出力では、フォームを送信する前に if condition.before のメッセージが表示されます

4

4 に答える 4

2

このようにしてみてください:

$date = DateTime::createFromFormat('Y/m/d', '2012/03/23');
echo $date->format('Y/m/d');

またはこのように:

$date = DateTime::createFromFormat('Y/M/d', '2012/Mar/23');
echo $date->format('Y/m/d');
于 2012-05-10T06:47:40.183 に答える
1

In Your Codedate('Y/M/d')形式が主な問題です。空のタイムスタンプを返すため、間違った回答が生成されます。そのため、ここでは strtotime に Y/m/d 形式を使用してください。

ありがとう

于 2012-05-10T06:50:28.353 に答える
0

strtotime は「Y/M/d」をサポートしていません

「Y/m/d」のみをサポートします (小文字の m に注意してください)。

strtotime がサポートする形式のリストについては、ここをクリックしてください。

したがって、ロジックのデータ型を「Y/m/d」にする必要があり、ユーザーの画面に出力する場合は、表示を「Y/M/d」としてフォーマットするだけです

于 2012-05-10T06:44:00.623 に答える
0

問題を解決するには、次の手順に従います。

1.操作に Y/M/d 形式を使用しないでください。Ymd 形式のみを使用してください。

2.「第一土曜日」は与えられた日付から計算します。指定された日付がすでに土曜日の場合は、次の日付が計算されます。

strtotime()3. anddate()関数の周りで何度も何度も逆の支払いをしている

4.土曜日が必要な場合は、表現レイヤーで Y/M/d 形式をstrtotime()使用しますが、なぜ再び日付形式に変換するのですか?

要するに、より明確にするために、表現と操作を分離してください。これは、一度に両方のことを行っているために発生しています。

于 2012-05-10T07:09:21.427 に答える