ifステートメントの日付比較

私の意図する目的は、投稿がコメントを許可するかどうかを確認し、date_comments_expiresが渡された日の前でないことを確認する場合にチェックすることです。私はこの文を完成させる方法についてはあまりよく分かりません。どんな助け?

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire'] == ) {

編集:

ここでは、私はメンバー関数getTimeStamp非オブジェクトの呼び出しを取得している私の更新されたコードです

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire']->getTimestamp() > time() ) {
                    echo "".$mainNews[0]['number_of_comments']."";   
                }    
0
date_comments_expireは日時フィールドです
追加された 著者 Jeff Davidson,
$ mainNews [0] ['date_comments_expire'] には何が含まれていますか?
追加された 著者 str,
date_comments_expire はMySQLの DATE -fieldですか?
追加された 著者 budwiser,
@Book:私はこれが "if statement if"を完成させる方法は分からないと思うが、最後の == の後に何を置くべきか分からない。
追加された 著者 mu is too short,
あなたは何か] ==)を見逃しますか?
追加された 著者 Book Of Zeus,

1 答え

これは、配列の date_comments_expire インデックスに含まれているものに完全に依存します。私はコメントが期限切れになったときに述べるunixタイムスタンプか、その合理的なテキスト解釈になると期待します。

あなたがUNIXのタイムスタンプを使っているなら、あなたは素晴らしいことをしています。テキストの場合は、続行する前にunixタイムスタンプに変換する必要があります。これに最も適した機能は strtotime() 。さまざまなテキストの日時表現を解析し、結果としてUNIXのタイムスタンプを返します。

エンドポイントをタイムスタンプとして表示したら、それを現在の時刻と比較することができます。このためには、 time() 関数は、現在の時刻をunixタイムスタンプとして返​​します。

UNIXのタイムスタンプは整数なので(1970年1月1日以降の秒数)、これは単純な比較です。

結局、あなたのコードは次のようになります:

// convert to timestamp if necessary, remove if unneeded
$commentExpiry == strtotime($mainNews[0]['date_comments_expire']);

if ($mainNews[0]['allow_comments'] == 'Yes' AND 
    $commentExpiry > time()) {
  //submit comments
} else {
  //error handling
}
2
追加された
date_comments_expireフィールドがdatetime形式の場合はどうなりますか?
追加された 著者 Jeff Davidson,
上記のコードを更新しました。
追加された 著者 Jeff Davidson,
私はすでにその日時フィールドを言った
追加された 著者 Jeff Davidson,
@ JeffDavidsonあなたはそれがPHPのDateTimeオブジェクトのことを意味ですか?その場合、DateTime :: getTimestamp()を使用してUnixのタイムスタンプを取得し、上記のように比較することができます。基本的に、条件の部分は$ mainNews [0] ['date_comments_expire'] - > getTimestamp()> time()になります。
追加された 著者 AgentConundrum,
@ JeffDavidsonさて、あなたはPHPのDateTimeオブジェクトを使用していません。 $ mainNews [0] ['date_comments_expire'] がどのように生成されたかを正確に表示できますか?これはあなたがデータベースから得たフィールドですか?もしそうなら、どのデータベース、そしてそのフィールドのデータ型は?
追加された 著者 AgentConundrum,
@JeffDavidsonそうですが、PHPにDateTimeオブジェクトもあります。これは私を混乱させるものです。私はあなたがMySQL DATETIMEのデータ型について今話していると仮定します。この場合、元々推奨されていた strtotime()に問題はないはずです。これはあなたにエラーをもたらしましたか? (私が仮定した "日時フォーマットの場合は、PHPのDateTimeを意味していました。
追加された 著者 AgentConundrum,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com