8.5. 日付関数全般用の定数
前のページ | 第8章 Zend_Date | 次のページ

## 8.5. 日付関数全般用の定数

`Zend_Date` のメソッドでパラメータ `$parts` を持つものはすべて、以下の定数のいずれかをパラメータとして指定することができます。 これにより、日付の中の特定の要素や使用する書式 (例: RFC 822) を指定します。

### 8.5.1. 定数の使用

たとえば、定数`Zend_Date::HOUR` の使用法は次のようになります。 曜日・時・分・秒・その他の要素が世界各地でさまざまな形式で表されていたとしても、 オブジェクトのタイムゾーン設定を使用して自動的に正しい値で計算を行います。 これは、内部のタイムスタンプの値が何であるかや ユーザが世界中のどこにいるかとは関係がありません。 使用する単位にかかわらず、出力結果は GMT/UTC あるいはロケールにあわせて地域化された形式となります。 以下の出力サンプルは、 Europe/GMT+1 (ドイツ、オーストリア、フランスなど) にあわせて地域化された形式です。

表 8.7. Zend_Date::HOUR を使用した操作

関数/入力 | 説明 | 元の日付 | 使用後の出力
--- | --- | --- | ---
get(Zend_Date::HOUR) | 時間を出力する | 2009-02-13T14:53:27+01:00 | 14
set(12, Zend_Date::HOUR) | 新しい時間を設定する | 2009-02-13T14:53:27+01:00 | 2009-02-13T12:53:27+01:00
add(12, Zend_Date::HOUR) | 時間を足す | 2009-02-13T14:53:27+01:00 | 2009-02-14T02:53:27+01:00
sub(12, Zend_Date::HOUR) | 時間を引く | 2009-02-13T14:53:27+01:00 | 2009-02-13T02:53:27+01:00
compare(12, Zend_Date::HOUR) | 時間を比較し、0 か 1 あるいは -1 を返す | 2009-02-13T14:53:27+01:00 | 1 (オブジェクト > 引数 の場合)
copy(Zend_Date::HOUR) | 時間部のみをコピーする | 2009-02-13T14:53:27+01:00 | 1970-01-01T14:00:00+01:00
equals(14, Zend_Date::HOUR) | 時間を比較し、TRUE あるいは FALSE を返す | 2009-02-13T14:53:27+01:00 | TRUE
isEarlier(12, Zend_Date::HOUR) | 時間を比較し、TRUE あるいは FALSE を返す | 2009-02-13T14:53:27+01:00 | TRUE
isLater(12, Zend_Date::HOUR) | 時間を比較し、TRUE あるいは FALSE を返す | 2009-02-13T14:53:27+01:00 | FALSE

### 8.5.2. 全定数の一覧

日付/時刻の各要素に対応する定数が `Zend_Date` で定義されています。 `Zend_Date` がサポートするすべての定数を以下に示します。

表 8.8. 日に関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::DAY | 日 (二桁の数値) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00 (06)
Zend_Date::DAY_SHORT | 日 (一桁あるいは二桁の数値) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00 (6)
Zend_Date::WEEKDAY | 曜日 (地域化された完全な曜日名) | 2009-02-06T14:53:27+01:00 | Friday
Zend_Date::WEEKDAY_SHORT | 曜日 (地域化された曜日名の短縮形。三文字) | 2009-02-06T14:53:27+01:00 | Fre が金曜日を表す
Zend_Date::WEEKDAY_NAME | 曜日 (地域化された曜日名の短縮形。二文字) | 2009-02-06T14:53:27+01:00 | Fr が金曜日を表す
Zend_Date::WEEKDAY_NARROW | 曜日 (地域化された曜日名の短縮形。一文字) | 2009-02-06T14:53:27+01:00 | F が金曜日を表す
Zend_Date::WEEKDAY_DIGIT | 曜日 (0 = 日曜日, 6 = 土曜日) | 2009-02-06T14:53:27+01:00 | 5 が金曜日を表す
Zend_Date::WEEKDAY_8601 | ISO 8601 にもとづく曜日 (1 = 月曜日, 7 = 日曜日) | 2009-02-06T14:53:27+01:00 | 5 が金曜日を表す
Zend_Date::DAY_OF_YEAR | 日数 (一桁あるいは二桁の数値) | 2009-02-06T14:53:27+01:00 | 43
Zend_Date::DAY_SUFFIX | 英語で日付の後に追加する文字 (st, nd, rd, th) | 2009-02-06T14:53:27+01:00 | th

表 8.9. 週に関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::WEEK | 週 (1 から 53 までの数値) | 2009-02-06T14:53:27+01:00 | 7

表 8.10. 月に関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::MONTH_NAME | 月 (地域化された完全な月名) | 2009-02-06T14:53:27+01:00 | February
Zend_Date::MONTH_NAME_SHORT | 月 (地域化された月名の短縮形。三文字) | 2009-02-06T14:53:27+01:00 | Feb
Zend_Date::MONTH_NAME_NARROW | 月 (地域化された月名の短縮形。一文字) | 2009-02-06T14:53:27+01:00 | F
Zend_Date::MONTH | 月 (二桁の月番号) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00 (02)
Zend_Date::MONTH_DIGIT | 月 (一桁あるいは二桁の月番号) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00 (2)
Zend_Date::MONTH_DAYS | 当月の日数 (数値) | 2009-02-06T14:53:27+01:00 | 28

表 8.11. 年に関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::YEAR | 年 (数値) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00
Zend_Date::YEAR_8601 | ISO 8601 の年 (数値) | 2009-02-06T14:53:27+01:00 | 2009
Zend_Date::YEAR_SHORT | 年 (二桁の数値) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00
Zend_Date::YEAR_SHORT_8601 | ISO 8601 の年 (二桁の数値) | 2009-02-06T14:53:27+01:00 | 09
Zend_Date::LEAPYEAR | 今年がうるう年かどうか? (TRUE あるいは FALSE) | 2009-02-06T14:53:27+01:00 | FALSE

表 8.12. 時間に関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::HOUR | 時 (00-23、二桁) | 2009-02-06T14:53:27+01:00 | 14
Zend_Date::HOUR_SHORT | 時 (0-23、一桁あるいは二桁) | 2009-02-06T14:53:27+01:00 | 14
Zend_Date::HOUR_SHORT_AM | 時 (1-12、一桁あるいは二桁) | 2009-02-06T14:53:27+01:00 | 2
Zend_Date::HOUR_AM | 時 (01-12、二桁) | 2009-02-06T14:53:27+01:00 | 02
Zend_Date::MINUTE | 分 (00-59、二桁) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00
Zend_Date::MINUTE_SHORT | 分 (0-59、一桁あるいは二桁) | 2009-02-06T14:03:27+01:00 | 2009-02-06T14:03:27+01:00
Zend_Date::SECOND | 秒 (00-59、二桁) | 2009-02-06T14:53:27+01:00 | 2009-02-06T14:53:27+01:00
Zend_Date::SECOND_SHORT | 秒 (0-59、一桁あるいは二桁) | 2009-02-06T14:53:07+01:00 | 2009-02-06T14:53:07+01:00
Zend_Date::MILLISECOND | ミリ秒 (理論上は無限大) | 2009-02-06T14:53:27.20546 | 2009-02-06T14:53:27.20546
Zend_Date::MERIDIEM | その日の中での時間 (午前/午後) | 2009-02-06T14:53:27+01:00 | afternoon
Zend_Date::SWATCH | Swatch Internet Time | 2009-02-06T14:53:27+01:00 | 620

表 8.13. タイムゾーンに関する定数

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::TIMEZONE | タイムゾーン名 (省略形文字列) | 2009-02-06T14:53:27+01:00 | CET
Zend_Date::TIMEZONE_NAME | タイムゾーン名 (文字列) | 2009-02-06T14:53:27+01:00 | Europe/Paris
Zend_Date::TIMEZONE_SECS | GMT との時差を表す秒数 (integer) | 2009-02-06T14:53:27+01:00 | 3600 seconds to GMT
Zend_Date::GMT_DIFF | GMT との時差を表す秒数 (文字列) | 2009-02-06T14:53:27+01:00 | +0100
Zend_Date::GMT_DIFF_SEP | GMT との時差を表す秒数 (文字列、分割形式) | 2009-02-06T14:53:27+01:00 | +01:00
Zend_Date::DAYLIGHT | 夏時間かそうでないか? (TRUE あるいは FALSE) | 2009-02-06T14:53:27+01:00 | FALSE

表 8.14. 日付フォーマットに関する定数 (タイムゾーンを含むフォーマット)

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::ISO_8601 | ISO 8601 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00
Zend_Date::RFC_2822 | RFC 2822 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
Zend_Date::TIMESTAMP | Unix time (1970 年 1 月 1 日からの経過秒数) | 2009-02-13T14:53:27+01:00 | 1234533207
Zend_Date::ATOM | ATOM 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00
Zend_Date::COOKIE | クッキー形式の日付 (クッキー用の文字列) | 2009-02-13T14:53:27+01:00 | Friday, 13-Feb-09 14:53:27 Europe/Paris
Zend_Date::RFC_822 | RFC 822 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 09 14:53:27 +0100
Zend_Date::RFC_850 | RFC 850 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Friday, 13-Feb-09 14:53:27 Europe/Paris
Zend_Date::RFC_1036 | RFC 1036 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 09 14:53:27 +0100
Zend_Date::RFC_1123 | RFC 1123 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
Zend_Date::RSS | RSS フィード形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
Zend_Date::W3C | HTML/HTTP 用の W3C 形式の日付 (文字列) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00

特に注意すべきなのは `Zend_Date::DATES` です。これは、 `Zend_Date` で 入力 フォーマットを指定する際に使用すると、特別な働きをします。 入力フォーマットとして `$part` で使用すると、 この定数は、さまざまな類似日付書式をできるだけ受け入れようとします。 経験則にもとづいて入力日付文字列を自動的に分解し、単純なエラーを (もしあれば) できるだけ修正します。たとえば年、月、日の順序がおかしい場合などです。

表 8.15. 日付および時刻フォーマットに関する定数 (ロケールによって変化する書式)

定数 | 説明 | 日付 | 影響を受ける部分の例
--- | --- | --- | ---
Zend_Date::ERA | 時代 (地域化された文字列の短縮形) | 2009-02-06T14:53:27+01:00 | AD (紀元後)
Zend_Date::ERA_NAME | 時代 (地域化された文字列の完全系) | 2009-02-06T14:53:27+01:00 | anno domini (紀元後)
Zend_Date::DATES | 標準の日付 (地域化された文字列、デフォルト値) | 2009-02-13T14:53:27+01:00 | 13.02.2009
Zend_Date::DATE_FULL | 完全な日付 (地域化された文字列、完全形) | 2009-02-13T14:53:27+01:00 | Friday, 13. February 2009
Zend_Date::DATE_LONG | 長い日付 (地域化された文字列、長い形式) | 2009-02-13T14:53:27+01:00 | 13. February 2009
Zend_Date::DATE_MEDIUM | 通常の日付 (地域化された文字列、通常の形式) | 2009-02-13T14:53:27+01:00 | 13.02.2009
Zend_Date::DATE_SHORT | 省略形の日付 (地域化された文字列、短縮形式) | 2009-02-13T14:53:27+01:00 | 13.02.09
Zend_Date::TIMES | 標準の時刻 (地域化された文字列、デフォルト値) | 2009-02-13T14:53:27+01:00 | 14:53:27
Zend_Date::TIME_FULL | 完全な時刻 (地域化された文字列、完全形) | 2009-02-13T14:53:27+01:00 | 14:53 Uhr CET
Zend_Date::TIME_LONG | 長い時刻 (地域化された文字列、長い形式) | 2009-02-13T14:53:27+01:00 | 14:53:27 CET
Zend_Date::TIME_MEDIUM | 通常の時刻 (地域化された文字列、通常の形式) | 2009-02-13T14:53:27+01:00 | 14:53:27
Zend_Date::TIME_SHORT | 省略形の時刻 (地域化された文字列、短縮形式) | 2009-02-13T14:53:27+01:00 | 14:53

### 8.5.3. 自分で定義する出力フォーマット

たいていのフォーマットについては ISO 8601 形式で対応できるでしょう。 しかし、ISO 形式ですべてが対応できるわけではありません。 フォーマット文字列の長さは無制限です。 また、同じ定数を複数回使用してもかまいません。 次の例は、以下の表にまとめたフォーマット定数を使用して自分でフォーマットを定義するものです。

例 8.10. 自分で定義するフォーマットの例

    <?php
    require_once 'Zend/Date.php';

    $locale = new Zend_Locale('de_AT');
    $date = new Zend_Date(1234567890, false, $locale);
    print $date->toString("'Era:GGGG='GGGG, ' Date:yy.MMMM.dd'yy.MMMM.dd");
    ?>

表 8.16. ISO 8601 日付出力 に関する定数

定数 | 説明 | 対応する要素 | 影響を受ける部分の例
--- | --- | --- | ---
G | 時代 (地域化された省略形) | Zend_Date::ERA | AD
GG | 時代 (地域化された省略形) | Zend_Date::ERA | AD
GGG | 時代 (地域化された省略形) | Zend_Date::ERA | AD
GGGG | 時代 (地域化された完全形) | Zend_Date::ERA_NAME | anno domini
GGGGG | 時代 (地域化された省略形) | Zend_Date::ERA | a
y | 年 (最低一桁) | Zend_Date::YEAR | 9
yy | 年 (最低二桁) | Zend_Date::YEAR_SHORT | 09
yyy | 年 (最低三桁) | Zend_Date::YEAR | 2009
yyyy | 年 (最低四桁) | Zend_Date::YEAR | 2009
yyyyy | 年 (最低五桁) | Zend_Date::YEAR | 02009
Y | ISO 8601 形式の年 (最低一桁) | Zend_Date::YEAR_8601 | 9
YY | ISO 8601 形式の年 (最低二桁) | Zend_Date::YEAR_SHORT_8601 | 09
YYY | ISO 8601 形式の年 (最低三桁) | Zend_Date::YEAR_8601 | 2009
YYYY | ISO 8601 形式の年 (最低四桁) | Zend_Date::YEAR_8601 | 2009
YYYYY | ISO 8601 形式の年 (最低五桁) | Zend_Date::YEAR_8601 | 02009
M | 月 (一桁あるいは二桁) | Zend_Date::MONTH_DIGIT | 2
MM | 月 (二桁) | Zend_Date::MONTH | 02
MMM | 月 (地域化された省略形) | Zend_Date::MONTH_NAME_SHORT | Feb
MMMM | 月 (地域化された完全形) | Zend_Date::MONTH_NAME | February
MMMMM | 月 (地域化された省略形、一桁) | Zend_Date::MONTH_NAME_NARROW | F
w | 週 (一桁あるいは二桁) | Zend_Date::WEEK | 5
ww | 週 (二桁) | Zend_Date::WEEK | 05
d | その月の日付 (一桁あるいは二桁) | Zend_Date::DAY_SHORT | 9
dd | その月の日付 (二桁) | Zend_Date::DAY | 09
D | その年の日付 (一桁、二桁あるいは三桁) | Zend_Date::DAY_OF_YEAR | 7
DD | その年の日付 (二桁あるいは三桁) | Zend_Date::DAY_OF_YEAR | 07
DDD | その年の日付 (三桁) | Zend_Date::DAY_OF_YEAR | 007
E | 曜日 (地域化された省略形、一桁) | Zend_Date::WEEKDAY_NARROW | M
EE | 曜日 (地域化された省略形、二桁) | Zend_Date::WEEKDAY_NAME | Mo
EEE | 曜日 (地域化された省略形、三桁) | Zend_Date::WEEKDAY_SHORT | Mon
EEEE | 曜日 (地域化された完全形) | Zend_Date::WEEKDAY | Monday
EEEEE | 曜日 (地域化された省略形、一桁) | Zend_Date::WEEKDAY_NARROW | M
e | 曜日番号 (一桁あるいは二桁) | Zend_Date::WEEKDAY_NARROW | 4
ee | 曜日番号 (二桁) | Zend_Date::WEEKDAY_NARROW | 04
a | 午前/午後 (地域化された形式) | Zend_Date::MERIDIEM | vorm.
h | 時間 (1-12) (一桁あるいは二桁) | Zend_Date::HOUR_SHORT_AM | 2
hh | 時間 (01-12) (二桁) | Zend_Date::HOUR_AM | 02
H | 時間 (0-23) (一桁あるいは二桁) | Zend_Date::HOUR_SHORT | 2
HH | 時間 (00-23) (二桁) | Zend_Date::HOUR | 02
m | 分 (0-59) (一桁あるいは二桁) | Zend_Date::MINUTE_SHORT | 2
mm | 分 (00-59) (二桁) | Zend_Date::MINUTE | 02
s | 秒 (0-59) (一桁あるいは二桁) | Zend_Date::SECOND_SHORT | 2
ss | 秒 (00-59) (二桁) | Zend_Date::SECOND | 02
S | ミリ秒 | Zend_Date::MILLISECOND | 20536
z | タイムゾーン (地域化された省略形) | Zend_Date::TIMEZONE | CET
zz | タイムゾーン (地域化された省略形) | Zend_Date::TIMEZONE | CET
zzz | タイムゾーン (地域化された省略形) | Zend_Date::TIMEZONE | CET
zzzz | タイムゾーン (地域化された完全形) | Zend_Date::TIMEZONE_NAME | Europe/Paris
Z | タイムゾーンの時差 | Zend_Date::GMT_DIFF | +0100
ZZ | タイムゾーンの時差 | Zend_Date::GMT_DIFF | +0100
ZZZ | タイムゾーンの時差 | Zend_Date::GMT_DIFF | +0100
ZZZZ | タイムゾーンの時差 (分割形式) | Zend_Date::GMT_DIFF_SEP | +01:00
A | ミリ秒 | Zend_Date::MILLISECOND | 20563

前のページ | 上に戻る | 次のページ
8.4. Zend_Date API の概要 | ホーム | 第9章 Zend_Db