It is helpful to note that the value of the property 'i' is never greater than 59. That is, it is not the TOTAL number of minutes in the interval. It is the number of minutes left after counting up all the hours.
For an interval of 182 minutes, 'h' is 3 and 'i' is 2.
DateInterval クラス
(PHP 5 >= 5.3.0)
導入
日付の間隔をあらわします。 格納方式は、固定値 (年、月、日、時など) あるいは相対時刻 (DateTime のコンストラクタがサポートしている書式) となります。
クラス概要
DateInterval
{
/* プロパティ */
/* メソッド */
}プロパティ
- y
-
年。
- m
-
月。
- d
-
日。
- h
-
時間。
- i
-
分。
- s
-
秒。
- invert
-
間隔が反転している場合は 1、そうでない場合は 0。 DateInterval::format() を参照ください。
- days
-
DateTime::diff() の計算における、開始日と終了日の間の日数。 それ以外の場合は days は
FALSEとなります。
目次
- DateInterval::__construct — 新しい DateInterval オブジェクトを作成する
- DateInterval::createFromDateString — 相対指定文字列から DateInterval を作成する
- DateInterval::format — 間隔をフォーマットする
Anonymous
26-Oct-2011 09:16
p dot scheit at ps-webforge dot com
15-Mar-2011 07:07
If you want to convert a Timespan given in Seconds into an DateInterval Object you could dot the following:
<?php
$dv = new DateInterval('PT'.$timespan.'S');
?>
but wenn you look at the object, only the $dv->s property is set.
As stated in the documentation to DateInterval::format
The DateInterval::format() method does not recalculate carry over points in time strings nor in date segments. This is expected because it is not possible to overflow values like "32 days" which could be interpreted as anything from "1 month and 4 days" to "1 month and 1 day".
If you still want to calculate the seconds into hours / days / years, etc do the following:
<?php
$d1 = new DateTime();
$d2 = new DateTime();
$d2->add(new DateInterval('PT'.$timespan.'S'));
$iv = $d2->diff($d1);
?>
$iv is an DateInterval set with days, years, hours, seconds, etc ...
Anonymous
18-Feb-2011 01:42
You cannot use the ++ operator on the DateInterval fields; it has no effect on the field value. To increase a field value, you have to do it the long way, for example $diff->h = $diff->h + 1; instead of $diff->h++; (observed in PHP 5.3.1).
jeff dot davies at yahoo dot com
14-Sep-2010 07:15
This class became available in PHP 5.3. It is not present in 5.2 or earlier releases. I found this out the hard way when you PHP scripts stopped working when I deployed them onto a Yahoo server. Yahoo has 5.2 while my machine hosts 5.3.
sebastien dot michea at manaty dot net
29-Aug-2010 10:25
It would be nice that when converting a DateInterval to a string, the interval specification used to construct the object is returned (like "P2W").
I need this to serialize a DateInterval object in order to store it in a postgres DB.
