モノノフ日記

普通の日記です

DateTimeクラスとDateTimeZoneクラス

なんとなく使ってて理解してなかったのでまとめてみた。
Zend FrameworkのZend_Dateも今度使ってみよう。

<?php
// 何も指定しないと"now", strtotime()が理解できる文字列が使える
$date = new DateTime();
echo $date->format('Y-m-d H:i:s'); // 指定した書式で日付を返す

$date->setDate(2000,12,24); // 日付を設定。時間は設定できないみたい。
echo $date->format('Y-m-d');

$date->setISODate(2002, 34, 3); // ISO日付を設定。例だと2002年34週の水曜日を示す。
echo $date->format('Y-m-d');

$date->modify('+2 days'); // 日付を設定。strtotime() が理解できる書式の文字列を指定
echo $date->format('Y-m-d');

echo $date->getOffset(); // 夏時間のoffsetを返す

echo $date->getTimezone()->getName(); // 現在のタイムゾーンを返す

$date->setTimezone(new DateTimeZone("America/New_York"); // タイムゾーンを指定した地域に変更

$timezone = new DateTimeZone("Asia/Tokyo"); // 指定したタイムゾーンでクラス生成

print_r($timezone->listIdentifiers()); // 全てのタイムゾーンを配列で返す

print_r($timezone->listAbbreviations()); // 夏時間、オフセット、タイムゾーンを含む配列を返す

$timezone->getOffset(new DateTime("now", "US/Hawaii")); // GMT からのタイムゾーンのオフセットを返す

print_r($timezone->getTransitions()); // タイムゾーンの変遷を返す。どういうケースで使うんだ?