Documentation

基本メソッド - Zend_Date

基本メソッド

この章では、Zend_Date の基本的な使用法を、 例をもとに説明します。このマニュアルで "日付" というときは、常に時刻も含んでいるものとします。 これは、明示的に説明していなくても同様です。 指定していない部分のデフォルトは "ゼロ" になります。 つまり、日付情報をもたず 12 時間という時刻情報だけを持つ値と 日付情報だけを持つ値を足すと、その日付の "正午" を表すようになります。

日付のみを指定して時刻部を省略すると、時刻は 00:00:00 になります。 逆に時刻のみを指定した場合は、日付の内部表現は 01.01.1970 からの経過秒数と等しくなります。 通常、人間が時間を計算する場合は西暦ゼロ年を基準とします。 しかし、多くのソフトウェアは 1970 年を基準として時間を計算します。 そして、ここからの経過秒数をタイムスタンプとして表します。

現在の日付

引数を指定せずにインスタンスを作成すると、 デフォルトのロケールでの現在時刻を表すオブジェクトを返します。 PHPtime() 関数で、このオブジェクトが使用する » UNIX タイムスタンプ を取得します。PHP の環境で、 デフォルトのタイムゾーン が正しく設定されていることを確認しておきましょう。

Example #1 現在の日付の作成

  1. $date = new Zend_Date();
  2.  
  3. // 現在のタイムスタンプを出力します
  4. print $date;

Zend_Date の使用例

Zend_Date の基本的なメソッドを見ていきましょう。 他の言語やフレームワークの日付オブジェクトではあまり見かけないメソッドもあります。 以下の各メソッドについて、簡単な例を示しています。

日付の出力

Zend_Date オブジェクトの日付を 地域化された形式の整数あるいは文字列で取得する際に、 get() メソッドを使用します。このメソッドには、 さまざまなオプションが使用可能です。これらのオプションについてはあとで説明します。

Example #2 get() - 日付の出力

  1. $date = new Zend_Date();
  2.  
  3. // 指定した日付を出力します
  4. print $date->get();

日付の設定

set() メソッドは、オブジェクトに格納されている日付を変更し、 変更後の値をタイムスタンプ (オブジェクトではありません) で返します。 このメソッドでもさまざまなオプションが使用可能です。 これらのオプションについてはあとで説明します。

Example #3 set() - 日付の設定

  1. $date = new Zend_Date();
  2.  
  3. // 新しい時刻を設定します
  4. $date->set('13:00:00',Zend_Date::TIMES);
  5. print $date->get(Zend_Date::W3C);

日付の加減算

二つの日付を add() で加算するという場合、 通常は実際の日付データにそうでない日付データの一部 ("12 時間" など) を加算することになります。たとえば以下の例のようなものです。 add() および sub() は、どちらも set() と同様のオプションを使用します。 これについてはあとで説明します。

Example #4 add() - 日付の加算

  1. $date = new Zend_Date();
  2.  
  3. // $date に 12 時間加算します
  4. $date->add('12:00:00', Zend_Date::TIMES);
  5.  
  6. echo "get() で取得した日付 = ", $date->get(Zend_Date::W3C), "\n";
  7.  
  8. // マジックメソッド __toString() から、Zend_Date の toString() をコールします
  9. echo "toString() で取得した日付 = ", $date, "\n";

日付の比較

Zend_Date の基本メソッド群はすべて、 オブジェクトに含まれる日付データ全体に対して操作できます。 また、日付の一部に対して操作する (日付の "分" の部分だけをある値と比較するなど) こともできます。 たとえば、現在時刻の "分" の部分を指定した値と比較するには compare() を使用します。以下に例を示します。

Example #5 compare() - 日付の比較

  1. $date = new Zend_Date();
  2.  
  3. // 二つの時刻を比較します
  4. if ($date->compare(10, Zend_Date::MINUTE) == -1) {
  5.     print "This hour is less than 10 minutes old";
  6. } else {
  7.     print "This hour is at least 10 minutes old";
  8. }

単純に等しいかどうかを比較するには equals() を使用します。これは boolean 値を返します。

Example #6 equals() - 日付あるいはその一部の同一性

  1. $date = new Zend_Date();
  2.  
  3. // 二つの日付を比較します
  4. if ($date->equals(10, Zend_Date::HOUR)) {
  5.     print "十時です。仕事を始める時間です。";
  6. } else {
  7.     print "十時ではありません。もうちょっと寝ていましょう。";
  8. }

Copyright

© 2006-2021 by Zend by Perforce. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.

Contacts