0

プロジェクトが先月公開されたかどうかを確認したいので、実際には機能しないコードを喜んでお手伝いします。はいの場合は、肯定的な結果を取得します。

    //$project_time="2012-08-01 13:43:49";
    $project_time="2012-10-02 14:05:09";
 $end=mktime(0,0,0,date("m",strtotime($project_time))+1,date("d",strtotime($project_time)),d    ate("y",strtotime($project_time)));
 $end=date("d.m.y",$end);
 $today=mktime(0,0,0,date("m"),date("d"),date("y"));
 $today=date("d.m.y",$today);    

echo 'Project date '.$date.'<br />';
echo 'End date '.$end.'<br />';
echo 'Today '.$today.'<br />';

if($today<$end){
  echo " open<br />";
}
else{
  echo " finish<br />";
}

PROJECT_TIME では最初に良い結果が得られ、もう 1 つはそうではありません。$ PROJECT_TIME プラス 1 か月に基づく $ end create 日。変数データ TOTDAY は、今日の日付を取得します。そして、PROJECTTIME から過去 1 か月かどうかの回答を取得したい比較

誰かが理解し、助けることができれば、私は幸せです.

4

3 に答える 3

1

strtotime は、使用する関数です。次の構文を使用するだけです。

$end = date('d.m.y', strtotime('+1 month', strtotime($project_time));

編集

文字列の比較について人々が言っ​​ていることは正しいです。文字列を比較するのではなく、タイムスタンプを比較してください。

于 2012-10-03T11:56:17.073 に答える
0

基本的な問題: 2 つの "dmy" 文字列を比較しています。

PHP はこれらを日付ではなくプレーンテキストとして認識するため、これは常に失敗します。したがって、どちらが大きいかを尋ねると、一般的に間違った答えが返されます。

また、古いスタイルの日付処理関数を使用して、その狂気をすべて取り除きます。最近の PHP には、そのようなことを行うためのはるかに優れた方法があります。

$project_time="2012-10-02 14:05:09";

$projDate = DateTime::createFromFormat('Y-m-d H:i:s', $project_time);
$dateNow = new DateTime();
if($projDate < $dateNow) {
    ... do something here...
}
于 2012-10-03T12:00:09.170 に答える
0

次のように書き換えてみてください。

$project_time = "2012-10-02 14:05:09";
$project_endtimestamp = strtotime('+1 month', strtotime($project_time));

echo 'Project date ' . $date . '<br />';
echo 'End date ' . date('d.m.y', $project_endtimestamp) . '<br />';
echo 'Today ' . date('d.m.y') . '<br />';

if (time() < $project_endtimestamp) {
    echo " open<br />";
} else {
    echo " finish<br />";
}

編集:質問を完全には理解していませんでした。@Simon Germainの回答に従って通話に追加+1 monthされました。strtotime

于 2012-10-03T11:56:46.973 に答える