例 – 実際に触ってみよう

導入

ここでは、実際に触ってみることで使い方を覚えていきましょう。

まずは Date オブジェクトのインスタンスを作成するところからです。

Date オブジェクトの作成

<?php
require_once 'Date.php';

// パラメータを省略すると、現在の日付・時刻になります
$now = new Date();

// あるいは ISO 形式の文字列を渡します
$longAgo = new Date('1813-02-23T05:34:23');

// PHP の Unix タイムスタンプから Date オブジェクトを作成します
$timestamp time();
$nearlyNow = new Date($timestamp);

// 既存の Date オブジェクトのコピーを作成します
$copyDate = new Date($longAgo);
?>

Date オブジェクトに対して何らかの操作をしたら、 きっとその結果を取得したくなることでしょう。 これを行うにはいくつかの方法があります。たとえば、 getTimegetDate を使用するなどです。

さまざまなフォーマットでの日付の取得

<?php
require_once 'Date.php';
$now = new Date();

// UNIX タイムスタンプ:     1183054688
echo $now->getTime();

// ISO 形式の日付: 2007-06-28 20:18:08
echo $now->getDate();
?>

Date にはこれ以外にもさまざまな出力メソッドがあります。 それらについては後半で扱います。

さて、Date のインスタンスを作成する方法がわかったので、 ちょっとした作業をしてみましょう。

時刻の差の計算

2 つの日付の間の時間を知りたいといった場面はよくあることでしょう。 Date を使えば、そんなのは簡単なことです。 まずは新たに Date_Span オブジェクトを作成してその setFromDateDiff メソッドを使用し、 toDays を用いて正確な日数を取得します。

時刻の差の計算

<?php
require_once 'Date.php';

$someDate  = new Date('1813-02-23T05:34:23');
$otherDate = new Date('1789-12-21T18:23:42');

$span = new Date_Span();
$span->setFromDateDiff($someDate$otherDate);

// 時刻の差を日付単位で表示します: 8463,46575231
echo $span->toDays();

// 時刻の差を年数で表示します: 23
echo (int)($span->toDays() / 365);
?>

Date とは異なり、Date_Span は内部的には整数型で処理を行います。つまり、32 ビット (約 68 年) までしか処理できないということです。

タイムゾーンの変換

Date は、タイムゾーンも扱うことができます。 サポートするすべてのタイムゾーンを配列で取得するには getAvailableIDs を次のように使用します。 $list = Date_TimeZone::getAvailableIDs();

convertTZ は、 Date オブジェクトのタイムゾーン設定を指定したものに変更します。 format を使用すると、タイムゾーンの設定を表示することができます。 Date_TimeZonegetDefault メソッドを使用すると、 そのコンピュータ上のデフォルトのタイムゾーンを取得することができます。

タイムゾーンの変換

<?php
require_once 'Date.php';

// 現在が 2007-06-28 18:42:12 だとしましょう
$now      = new Date();
$timezone = new Date_TimeZone('Australia/Adelaide');

// 日付オブジェクトのタイムゾーンを変換します
$now->convertTZ($timezone);

// 次のようになります:     2007-06-29 02:12:12
echo $now->getDate();
// タイムゾーンつきで、このようになります: 2007-06-29 02:12:12+09:30
echo $now->format('%Y-%m-%d %H:%M:%S%O');

// もとに戻します
$defaultZone Date_TimeZone::getDefault();
$now->convertTZ($defaultZone);

// もとのタイムゾーンに戻ります: 2007-06-28 18:42:12+02:00
echo $now->format('%Y-%m-%d %H:%M:%S%O');
?>

日付配列の並べ替え

Date オブジェクトの配列を作成したら、 それを並べ替えたくなるかもしれません。そんなときに使えるのが compare メソッドです。

日付の並べ替え

<?php
require_once 'Date.php';

$dates = array(
    new 
Date('1813-02-23T05:34:23'),
    new 
Date(),
    new 
Date('1714-12-21T18:23:42'),
);

usort($dates, array('Date''compare'));

/*
* 日付を並べ替えて表示します
*  1714-12-21 18:23:42
*  1813-02-23 05:34:23
*  2007-06-28 20:59:39
*/
foreach ($dates as $date) {
    echo 
$date->getDate() . "\n";
}
?>
Date (Previous) 情報を取得する方法 (Next)
Last updated: Fri, 29 Aug 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.