時間の計算も楽々!!
本日は2025年10月24日(Fri) 12:58:28です。
<?php $today = new DateTime();//本日
echo "本日は", $today->format('Y年m月d日(D) H:i:s'),"です。";?>
PHP5.0のリリース日は2004年07月13日(Tue)です。リリースされてから21年3ヶ月11日経っています
<?php $php5 = new DateTime('13 July 2004');//PHP5.0のリリース日
echo "PHP5.0のリリース日は", $php5->format('Y年m月d日(D)'), "です。リリースされてから";
$diff = $today->diff($php5);
echo $diff->format('%y年%mヶ月%d日'),"経っています";?>
PHP5.1のリリース日は2005年11月24日(Thu)です。リリースされてから19年11ヶ月0日経っています。
<?php $php51 = new DateTime('2005/11/24');//PHP5.1のリリース日
echo "PHP5.1のリリース日は", $php51->format('Y年m月d日(D)'), "です。リリースされてから";
$diff = $today->diff($php51);
echo $diff->format('%y年%mヶ月%d日'),"経っています。";?>
PHP5.2のリリース日は2006年11月02日(Thu)です。リリースされてから18年11ヶ月22日経っています
<?php $php52 = new DateTime('2006-11-2');//PHP5.2のリリース日
echo "PHP5.2のリリース日は", $php52->format('Y年m月d日(D)'),"です。リリースされてから";
$diff = $today->diff($php52);
echo $diff->format('%y年%mヶ月%d日'),"経っています";?>
PHP5.3のリリース日は2009年06月30日(Tue)です。リリースされてから16年3ヶ月24日経っています。総日数は5960 日です。
<?php $php53 = new DateTime('20090630');//PHP5.3のリリース日
echo "PHP5.3のリリース日は", $php53->format('Y年m月d日(D)'), "です。リリースされてから";
$diff = $today->diff($php53);
echo $diff->format('%y年%mヶ月%d日'), "経っています。総日数は", $diff->format("%a 日"),"です。";?>
PHP5.4のリリース日は2012年03月01日(Thu)です。リリースされてから13年7ヶ月23日経っています
<?php $php54 = new DateTime('2012-03-01');//PHP5.4のリリース日
echo "PHP5.4のリリース日は", $php54->format('Y年m月d日(D)'),"です。リリースされてから";
$diff = $today->diff($php54);
echo $diff->format('%y年%mヶ月%d日'),"経っています";?>
PHP5.5のリリース日は2013年06月20日(Thu)です。リリースされてから12年4ヶ月4日経っています
<?php $php55 = new DateTime('2013-06-20');//PHP5.5のリリース日
echo "PHP5.5のリリース日は", $php55->format('Y年m月d日(D)'),"です。リリースされてから";
$diff = $today->diff($php55);
echo $diff->format('%y年%mヶ月%d日'),"経っています";?>
PHP5.6のリリース日は2014年08月28日(Thu)です。リリースされてから11年1ヶ月27日経っています
<?php $php56 = new DateTime('2014-08-28');//PHP5.6のリリース日
echo "PHP5.6のリリース日は", $php55->format('Y年m月d日(D)'),"です。リリースされてから";
$diff = $today->diff($php56);
echo $diff->format('%y年%mヶ月%d日'),"経っています";?>
日付だけでなく時間の差分もできます!
7時間51分寝ました
<?php $sleep = new DateTime('2011-06-01 23:47');
$wakeup = new DateTime('2011-06-02 07:38');
$diff = $sleep->diff($wakeup);
echo $diff->format('%h時間%i分寝ました');?>
本日のタイムスタンプは1761278308です。
<?php echo "本日のタイムスタンプは", $today->format('U'),"です。";?>
2038年問題も解消!!
2040年のタイムスタンプは2208956400です
<?php $dt = new DateTime("2040-01-01");echo "2040年のタイムスタンプは" ,$dt->format('U'),"です";?>
そしてその日付に1年2ヶ月3日4時間5分6秒足してみましょう!
→2012年09月04日 14時35分56秒そして更にそこから3年2ヶ月1日を引いてみます。
→2009年07月03日 14時35分56秒そして更に更にそこから1時間2分3秒を引いてみます。
→2009年07月03日 13時33分53秒
<?php $dt = new DateTime('2011-07-01 10:30:50');
echo "元になる時間です。→" , $dt->format('Y年m月d日 H時i分s秒');
echo "<p>そしてその日付に1年2ヶ月3日4時間5分6秒足してみましょう!</p>";
$dt->add(new DateInterval('P1Y2M3DT4H5M6S'));
echo "→", $dt->format('Y年m月d日 H時i分s秒'), "<br /><br />";
echo "<p>そして更にそこから3年2ヶ月1日を引いてみます。</p>";
$dt->sub(new DateInterval('P3Y2M1D'));
echo "→", $dt->format('Y年m月d日 H時i分s秒'),"<br /><br />";
echo "<p>そして更に更にそこから1時間2分3秒を引いてみます。</p>";
$dt->sub(new DateInterval('PT1H2M3S'));
echo "→", $dt->format('Y年m月d日 H時i分s秒');?>
<?php
//加減算
$dt = new DateTime("2011-07-1 10:15:20");
echo "元になる日付です。→", $dt->format('Y年m月d日 H時i分s秒'), "<br /><br />";
$d = $dt->add(DateInterval::createFromDateString("1year 2month 3day 4hour 5min 6sec"));
echo "そこで1年2ヶ月3日4時間5分6秒足してみます。→", $d->format("Y-m-d H:i:s"), "<br /><br />";
$d = $dt->sub(DateInterval::createFromDateString("6year 5month 4day 3hour 2min 1sec"));
echo "そして更に6年5ヶ月4日3時間2分1秒引いてみます。→", $d->format("Y-m-d H:i:s"), "<br /><br />";
$d = $dt->add(DateInterval::createFromDateString("1year 2month 3day 4hour 5min 6sec ago"));
echo "更に1年2ヶ月3日4時間5分6秒引きます。→", $d->format("Y-m-d H:i:s"),"<br>";
?>
書式文字列で利用可能な記述子
| 記述子 | 概要 | 値 |
|---|---|---|
| 年 | ||
| Y | 年(4桁) | (例)2011 |
| y | 年(2桁) | (例)11 |
| z | 年間の通算日 | 0~365 |
| L | 閏年であるか | 0|1 |
| W | 年の通算週 | 42 |
| 月 | ||
| m | 月(2桁) | 01~12 |
| n | 月 | 1~12 |
| F | 月(長い形式) | January~ December |
| M | 月(省略形) | Jan~Dec |
| t | 指定した月の日数 | 28~31 |
| 日 | ||
| d | 日(2桁) | 01~31 |
| j(ジェイ) | 日 | 1~31 |
| l(エル) | 曜日(長い形式) | Monday~Sunday |
| D | 曜日(省略形) | Mon~Sun |
| N | 曜日ISO-8601形式の曜日 | 1(月曜)~7(日曜) |
| w | 曜日 | 0(日曜)~6(土曜) |
| z | 年間の通算日数(ゼロから開始) | 0~365 |
| 時刻 | ||
| a | 午前/午後(小文字) | am|pm |
| A | 午前/午後(大文字) | AM|PM |
| h | 時(12時間単位)2桁 | 01~12 |
| H | 時(24時間単位)2桁 | 00~23 |
| g | 時(12時間単位) | 1~12 |
| G | 時(24時間単位) | 0~23 |
| i | 分 | 00~59 |
| s | 秒 | 00~59 |
| u | マイクロ秒(PHP5.2.2以上) | |
| タイムゾーン | ||
| e | タイムゾーン識別子 | UTC、GMT、Asia/Tokyo |
| O | グリニッジ標準時(GMT)との時差 | +0900 |
| P | グリニッジ標準時(GMT)との時差間 | +09:00 |
| Z | タイムゾーンのオフセット秒数 | -43200~43200 |
| 定型フォーマット | ||
| c | ISO8601形式の日付 | 2011-06-30T10:15:00+0900 |
| r | RFC2822形式の日付 | Thu,30 June 2011 10:15:00+0900 |
| U | タイムスタンプ | 1274461920 |
日付/時間間隔の単位(間隔指示子)
「P<日付間隔>T<時間間隔>」形式
3年6ヶ月1時間30分はP3Y6MT1H30M
1年2ヶ月はP1Y2M
5時間15分はPT5H15M
| 単位 | 概要 |
|---|---|
| Y | 年 |
| M | 月 |
| D | 日 |
| W | 週(Dと一緒に利用できない) |
| H | 時間 |
| M | 分 |
| S | 秒 |
書式文字列で利用可能な記述子
大文字は2桁で0をプラス
| 記述子 | 概要 |
|---|---|
| %Y,%y | 年 |
| %M,%m | 月 |
| %D,%d | 日 |
| %a | 総日数(DateTime::diff()による計算結果のみ出力可能、PHP5.3.1では正しく動作しない) |
| %H,%h | 時間 |
| %I,%i | 分 |
| %S,%s | 秒 |
| %R,%r | 負数は「-]、正数は「+」 |
スポンサーリンク