2

指定された日時までの「残り時間」を(部分的に)返すカウントダウン関数があります。値はDateIntervalオブジェクトとして返され、diffメソッドを使用して計算されます。

//calculate countdown time
$time_diff = $countdown->diff($current);

$ time_diffがDateIntervalオブジェクトであるとすると、これをどのように行うのでしょうか。

if ($time_diff > 60) {

    //do stuff

}

上記のコードが機能しないことは知っていますが、同等の条件(「このDateIntervalオブジェクトに60秒以上残っている」)をどのように評価できますか?

問題は、スクリプトが「残り時間」をUnixタイムスタンプ整数として返すために使用され、関数がシステム内のさまざまなスクリプトによってより手続き的な方法で使用されることです。

有益な提案を事前に感謝します。

4

3 に答える 3

2

オブジェクトから個々の値を取得できます。

if ($time_diff->s > 60) {

    //do stuff

}

プロパティの完全なリストについては、 DateIntervalクラス構造を参照してください。ただし、オブジェクトの各値(日、分、年など)を確認し、合計秒数を経過させたい場合は、それらをすべて合計する必要があると思います。もちろん、ユースケース(カウントダウンタイマー)では、決してそうではない可能性があります。必要ないかもしれないので秒以上の違い。

于 2012-12-19T14:41:36.127 に答える
1

format()を使用します。

echo $time_diff->format('%R%a days'); //'days' here, you need to change as you want

diffも参照してください。

于 2012-12-19T14:39:09.417 に答える
0

DateInterval オブジェクトで format() メソッドを使用して残り時間の合計を秒単位で直接取得することはできないため、関数にヘルパーを追加して、「残り時間」を Unix タイムスタンプとして返​​すことになりました。 DateInterval オブジェクト。

//calculate unix timetamps
$current_ts = time();
$countdown_ts = $countdown->getTimestamp();
$timestamp_diff = ($current_ts < $countdown_ts) ? ($countdown_ts - $current_ts) : 0;

これが他の人に役立つことを願っています。

PS。スタックオーバーフローは素晴らしいです。

于 2012-12-19T15:51:01.213 に答える