2012-02-10 6 views
2

私は(仕事)と一緒に作業しているカスタムポストタイムのために単純な「XX days left」を取得しようとしています。私はどこでも答えを見つけようとしましたが、何もうまく適応せず、インターネット上の例に続いて1000回自分のコードを変更しましたが、解決できませんでした。私のコードは次のようになりPHP/Wordpressで日付を指定する日が残っています

:get_field( 'toDateまで')を終える$上

<?php 
$today = date('d/m/Y'); 
$today = strtotime($today); 
$finish = get_field('todate'); 
$finish = strtotime($finish); 
//diference 
$diff = $finish - $today; 
$daysleft=floor($diff/(60*60*24)); 
echo "$daysleft days left"; 
?> 

は日付DD/MM/YYYYを返し

私を助けてくださいすることができます誰ですか?

ありがとうございます!

+1

あなたは単に '$ today = time()'を実行して、無意味な "unixタイムスタンプを取って、文字列にフォーマットした後、元のunixタイムスタンプに2行前のコードを解析する"ことができます。 –

+0

@dqhendricks $ daysleftをエコーするという考えは、終了日までに残った日数を表示することです。 $今日は今日の時間を得て、仕上げはそれらを仕上げ返す、strtotimeは違いを作るための数字を持っていた。私はdd/mm/yyyyがサポートされていないことを知らなかった。 – Jaypee

+0

@dqhendricks私はこれを解決することができた、コードは99%正確だった、私はヨーロッパの日付(dd/mm)で動作しないアメリカのタイプ(mm/dd)に日付を修正しなければならなかった。答え1の人がそれを解決するのを助けました。私はこのフィールドの値を表示したかったので嫌いですが、日付フォーマットが間違っているのでできません。そのため、ユーザーに2つの入力が必要です(公開終了日と終了日はヨーロッパのフォーマット)あなたの助けに感謝します。 – Jaypee

答えて

4

$ todayと$ finish変数にd/m/Y(m/d/Yにする必要があります)の配置が問題です(strtotimeで動作する有効な日付形式のリストについてはPHP Date Formatをご覧ください)。ページ):

<?php  
    $today = date('m/d/Y'); 
    $today = strtotime($today); 
    $finish = get_field('todate'); 
    $finish = strtotime($finish); 
    //difference 
    $diff = $finish - $today; 

    $daysleft=floor($diff/(60*60*24)); 
    echo "$daysleft days left"; 
?> 

は$終了日を想定し、テストおよび作品は、M/D/YYYYとして入力される(ないD/M/YYYY)どのようにこの機能について

+0

私はdd/mm/yyyyを使用していました。私の国では日付がそのように設定されていて、別の場所にそのフィールド値を表示していたので、dd/mm/yyyyを維持したいと思っています。 これはあなたに知らせてくれてありがとう! – Jaypee

+0

ありがとうございます - あなたがコメントしている間にそれを理解したので、strtotimeで動作する日付書式についてのPHPのドキュメントへの参照を追加しました。それらをチェックして、どのフォーマットが最適かを確認してください。 –

+0

日付形式として30-6-2008を使用することができます([PHP Date Format Documentation](http://www.php.net/manual/en/datetime.formats.date.php)から) –

0

として?

function DayDifference($start, $end) { 
    $start = strtotime($start); 
    $end = strtotime($end); 
    $difference = $end - $start; 
    return round($difference/86400); 
} 
echo DayDifference("2012-02-10", "2012-02-20").' days left'; 
1

strtotimeは、値がドット、タブ、またはダッシュで区切られている場合は、日 - 月 - 年形式の日付のみを解析します。 Date Formatsを参照してください。

あなたはPHP 5.2以上を使用している場合は、合計日数を取得するには、以下の機能を使用することができます。

<?php 

$today = date('m/d/Y'); 
$today = new DateTime($today); 

$finish = get_field('todate'); // MAKE SURE THIS IS m/d/Y or Y/m/d 
$finish = new DateTime($finish); 

//diference 
$diff = $finish->diff($today); 
$daysleft = $diff->format('%a'); // %a modifier means total days 

echo "$daysleft days left\n"; 

これは、DSTと飛躍の年を考慮しました。

+0

私はPHP 5.3.8を使用していますが、このコードは致命的なエラーになります – Jaypee

+0

致命的なエラーは何ですか? – drew010

+0

ありがとうございました。私は、日付形式をアメリカの日付形式に変更することでこれを解決することができました。今はうまくいっています。 – Jaypee

関連する問題