日付時刻 | 15g.jp

Pocket

・タイムスタンプ:UNIX時間。1970/1/1からの秒数。非常に使いやすい
・タイムゾーン:時間の基準となる場所。大抵はデフォルトのままでうまくやってくれる。

datetimeなどのクラスはDateTimeInterface インターフェイスをimplimentsしているので、
DateTimeInterfaceクラスも見ておくこと
特にformat()はDateTimeInterfaceni書かれているので注意

DateTime::diff 差分
戻り値はDateInterval クラス

public DateTime::__construct ([ string $time = “now” [, DateTimeZone $timezone = NULL ]] )
現在日時は以下
$foo = new DateTime();

UNIX時間、タイムスタンプを返す。非常に使いやすい。2通りの方法あり
public int DateTime::getTimestamp ( void )
int time ( void )

DateTime::format()
引数で指定した方法で日付時刻を文字列にして返す

DateTime::createFromFormat()
format()の反対で文字列から日付時刻を返す。あんまり使わない。

10日前
$date = new DateTime(‘2000-01-20’);
$date->sub(new DateInterval(‘P10D’));
echo $date->format(‘Y-m-d’) . “\n”;

10日後
$date = new DateTime(‘2000-01-20’);
$date->add(new DateInterval(‘P10D’));
echo $date->format(‘Y-m-d’) . “\n”;

返り値で計算したい場合はDateTimeImmutableを使う
$date = new DateTimeImmutableを使う(‘2000-01-20’);
$date2 = $date->add(new DateInterval(‘P10D’));
echo $date2->format(‘Y-m-d’) . “\n”;

format()の引数
年 — —
L 閏年であるかどうか。 1なら閏年。0なら閏年ではない。
o ISO-8601 形式の週番号による年。これは Y ほぼ同じだが、ISO 週番号 (W)が前年あるいは翌年に属する場合はそちらの年を使うという点が異なる(PHP 5.1.0 で追加)。 例: 1999 あるいは 2003
Y 年。4 桁の数字。 例: 1999または2003
y 年。2 桁の数字。 例: 99 または 03
月 — —
F 月。フルスペルの文字。 January から December
m 月。数字。先頭にゼロをつける。 01 から 12
M 月。3 文字形式。 Jan から Dec
n 月。数字。先頭にゼロをつけない。 1 から 12
t 指定した月の日数。 28 から 31
日 — —
d 日。二桁の数字(先頭にゼロがつく場合も) 01 から 31
D 曜日。3文字のテキスト形式。 Mon から Sun
j 日。先頭にゼロをつけない。 1 から 31
l (小文字の ‘L’) 曜日。フルスペル形式。 Sunday から Saturday
N ISO-8601 形式の、曜日の数値表現 (PHP 5.1.0 で追加)。 1(月曜日)から 7(日曜日)
S 英語形式の序数を表すサフィックス。2 文字。 st, nd, rd またはth。 jと一緒に使用する ことができる。
w 曜日。数値。 0 (日曜)から 6 (土曜)
z 年間の通算日。数字。(ゼロから開始) 0 から 365
週 — —
W ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0 で追加) 例: 42 (年の第 42 週目)
時 — —
a 午前または午後(小文字) am または pm
A 午前または午後(大文字) AM または PM
B Swatch インターネット時間 000 から 999
g 時。12時間単位。先頭にゼロを付けない。 1 から 12
G 時。24時間単位。先頭にゼロを付けない。 0 から 23
h 時。数字。12 時間単位。 01 から 12
H 時。数字。24 時間単位。 00 から 23
i 分。先頭にゼロをつける。 00 から 59
s 秒。先頭にゼロをつける。 00 から 59
u マイクロ秒 (PHP 5.2.2 で追加)。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータは integer 型だからです。 一方 DateTime をマイクロ秒つきで作成した場合は、DateTime::format() はマイクロ秒にも対応しています。 例: 654321
タイムゾーン — —
e タイムゾーン識別子(PHP 5.1.0 で追加) 例: UTC, GMT, Atlantic/Azores
I (大文字の i) サマータイム中か否か 1ならサマータイム中。 0ならそうではない。
O グリニッジ標準時 (GMT) との時差 例: +0200
P グリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式 (PHP 5.1.3 で追加)。 例: +02:00
T タイムゾーンの略称 例: EST, MDT …
Z タイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。 -43200 から 50400
全ての日付/時刻 — —
c ISO 8601 日付 (PHP 5 で追加されました) 2004-02-12T15:19:21+00:00
r » RFC 2822 フォーマットされた日付 例: Thu, 21 Dec 2000 16:01:07 +0200
U Unix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数 time() も参照

日付時刻の間隔を表すクラス:DateInterval

DateInterval::__construct()
2年4ヶ月6時間8分の差を表すには…
$interval = new DateInterval(‘P2Y4DT6H8M’);
Pは必須。その後に単位が大きい順に、整数と単位を並べる。使える単位はformat()と同じ

DatePeriod。日付の間隔。使いづらい?

bool checkdate ( int $month , int $day , int $year ) 日付の妥当性をチェックする

カレンダー関数。Dateでいいけど一応。
cal_days_in_month — 指定した年とカレンダーについて、月の日数を返す
$d = cal_days_in_month(CAL_GREGORIAN, 8, 2003);
unixtojd — Unix タイムスタンプをユリウス歴に変換する

カレンダー定数。ユリウス暦が多分一番よく使う
0 あるいは CAL_GREGORIAN – グレゴリウス暦
1 あるいは CAL_JULIAN – ユリウス暦
2 あるいは CAL_JEWISH – ユダヤ暦
3 あるいは CAL_FRENCH – フランス革命暦