2016-11-02 11 views
1

これは、2つの日付の間に設定されたボタンを表示するように設定されています。また、設定された開始日前に "xxxでサインアップを開始する"と設定した終了日後に "xxxxをサインアップする"と表示する...日付に基づくコンテンツを表示する(前後の日付、日付の前後の日付)

「アクティブなperiode」/日付...

$DateToday = date('Ymd'); 
$DateStart = get_field('pamelding_fra'); 
$DateEnd = get_field('pamelding_slutt'); 
$DateStartOut = new DateTime($DateStart); 
$DateEndOut = new DateTime($DateEnd); 

if ($DateStart >= $DateToday){ 

    $ClassStatus = "<div class=\"OpenClassButton\"><span class=\"ClassFullWarning\">Påmeldingen åpner " . $DateStartOut->format('j M Y') . "</span></div>"; 
    $ClassButton = $ClassStatus; 

}elseif ($DateEnd <= $DateToday){ 

    $ClassStatus = "<div class=\"OpenClassButton\"><span class=\"ClassFullWarning\">Påmeldingen stengte " . $DateEndOut->format('j M Y') . "</span></div>"; 
    $ClassButton = $ClassStatus; 

}elseif ($DateStart <= $DateToday && $DateEnd >= $DateToday){ 

    //Do some stuff - show button, this is the active time.  
} 

私はベストプラクティスではないかもしれませんし、私には難しいものがあります。

答えて

0

日付文字列を使用して日付を比較しないでください。それらのフォーマットが異なる場合(YmdmdYなど)、望ましくない結果が得られます。代わりにunixタイムスタンプを使用してください。

$today = time(); // Get today's timestamp 

if ($today < strtotime($DateStart)) { 
    // Do stuff before 
} elseif ($today > strtotime($DateEnd)) { 
    // Do stuff after 
} else { 
    // Active. No need for any conditions here, 
    // since we only have three states. 
} 
+0

日付の開始日と終了日はJqueryの日付スタンプ(20160211)YYDDMM これはどのように影響しますか? –

+0

これは問題ではありません。 'strtotime()'はそれらの日付をタイムスタンプに変換します。私はちょうどその形式の日付で上記のコードをテストしたので... –

関連する問題