この章では、Zend_Date
の基本的な使用法を、
例をもとに説明します。このマニュアルで "日付"
というときは、常に時刻も含んでいるものとします。
これは、明示的に説明していなくても同様です。
指定していない部分のデフォルトは "ゼロ" になります。
つまり、日付情報をもたず 12 時間という時刻情報だけを持つ値と
日付情報だけを持つ値を足すと、その日付の "正午" を表すようになります。
日付のみを指定して時刻部を省略すると、時刻は 00:00:00 になります。 逆に時刻のみを指定した場合は、日付の内部表現は 01.01.1970 からの経過秒数と等しくなります。 通常、人間が時間を計算する場合は西暦ゼロ年を基準とします。 しかし、多くのソフトウェアは 1970 年を基準として時間を計算します。 そして、ここからの経過秒数をタイムスタンプとして表します。
引数を指定せずにインスタンスを作成すると、
デフォルトのロケールでの現在時刻を表すオブジェクトを返します。
PHP の time()
関数で、このオブジェクトが使用する
UNIX タイムスタンプ
を取得します。PHP の環境で、
デフォルトのタイムゾーン
が正しく設定されていることを確認しておきましょう。
Zend_Date
の基本的なメソッドを見ていきましょう。
他の言語やフレームワークの日付オブジェクトではあまり見かけないメソッドもあります。
以下の各メソッドについて、簡単な例を示しています。
Zend_Date
オブジェクトの日付を
地域化された形式の整数あるいは文字列で取得する際に、
get()
メソッドを使用します。このメソッドには、
さまざまなオプションが使用可能です。これらのオプションについてはあとで説明します。
set()
メソッドは、オブジェクトに格納されている日付を変更し、
変更後の値をタイムスタンプ (オブジェクトではありません) で返します。
このメソッドでもさまざまなオプションが使用可能です。
これらのオプションについてはあとで説明します。
二つの日付を add()
で加算するという場合、
通常は実際の日付データにそうでない日付データの一部 ("12 時間" など)
を加算することになります。たとえば以下の例のようなものです。
add()
および sub()
は、どちらも
set()
と同様のオプションを使用します。
これについてはあとで説明します。
例 8.5. add() - 日付の加算
<?php require_once 'Zend/Date.php'; $date = new Zend_Date(); // $date に 12 時間加算します $date->add('12:00:00', Zend_Date::TIMES); echo "Date via get() = ", $date->get(Zend_Date::W3C), "\n"; // マジックメソッド __toString() から、Zend_Date の toString() をコールします echo "Date via toString() = ", $date, "\n"; ?>
Zend_Date
の基本メソッド群はすべて、
オブジェクトに含まれる日付データ全体に対して操作することができます。
また、日付の一部に対して操作する (日付の "分"
の部分だけをある値と比較するなど) こともできます。
たとえば、現在時刻の "分" の部分を指定した値と比較するには
compare()
を使用します。以下に例を示します。
例 8.6. compare() - 日付の比較
<?php require_once 'Zend/Date.php'; $date = new Zend_Date(); // 二つの時刻を比較します if ($date->compare(10, Zend_Date::MINUTE) == -1) { print "This hour is less than 10 minutes old"; } else { print "This hour is at least 10 minutes old"; } ?>
単純に等しいかどうかを比較するには equals()
を使用します。これは boolean 値を返します。