$date1 = DateTime::createFromFormat('Ymdhisu', '20120921105240000');
$date2 = DateTime::createFromFormat('Ymdhisu', '20120921115626000');
$interval = $date1->diff($date2);
print_r($interval);
/*DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 1
[i] => 3
[s] => 46
[invert] => 0
[days] => 0
)*/
$seconds = $date2->getTimestamp()-$date1->getTimestamp();
echo $seconds;
例
オブジェクトとメソッドに関する追加情報を参照してください。
PHP < 5.3 の場合:
メソッドsscanf
+ mktime
:
$date1 = '20120921105240000';
$date2 = '20120921115626000';
function parse_mydate_string($string) {
if ($a = sscanf($string, '%4s%2s%2s%2s%2s%2s') {
if (FALSE !== $r = mktime($a[3], $a[4], $a[5], $a[1], $a[2], $a[0])) {
return $r;
}
}
throw new InvalidArgumentException('Not the expect date string.');
}
$diff = parse_mydate_string($date1) - parse_mydate_string($date2);
$absdiff = abs($diff);
またはsscanf
+ vsprintf
+ strtotime
:
$date1 = '20120921105240000';
$date2 = '20120921115626000';
$date1 = vsprintf('%s-%s-%s %s:%s:%s', sscanf($date1, '%4s%2s%2s%2s%2s%2s'));
$date2 = vsprintf('%s-%s-%s %s:%s:%s', sscanf($date2, '%4s%2s%2s%2s%2s%2s'));
$diff = abs(strtotime($date2) - strtotime($date1));
または複数のsubstr
文字列操作 + strtotime
:
$date1 = '20120921105240000';
$date2 = '20120921115626000';
$date1 = substr($date1, 0, 4).'-'.substr($date1, 4, 2).'-'.substr($date1, 6, 2).' '.substr($date1, 8, 2).':'.substr($date1, 10, 2).':'.substr($date1, 12, 2);
$date2 = substr($date2, 0, 4).'-'.substr($date2, 4, 2).'-'.substr($date2, 6, 2).' '.substr($date2, 8, 2).':'.substr($date2, 10, 2).':'.substr($date2, 12, 2);
$diff = abs(strtotime($date2) - strtotime($date1));