時間の計算も楽々!!

本日の表示

本日は2017年02月20日(Mon) 03:37:36です。


<?php $today = new DateTime();//本日
echo "本日は", $today->format('Y年m月d日(D) H:i:s'),"です。";?>

差分表示

PHP5.0のリリース日は2004年07月13日(Tue)です。リリースされてから12年7ヶ月7日経っています

<?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)です。リリースされてから11年2ヶ月26日経っています。

<?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)です。リリースされてから10年3ヶ月18日経っています

<?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)です。リリースされてから7年7ヶ月20日経っています。総日数は2792 日です。

<?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)です。リリースされてから4年11ヶ月19日経っています

<?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)です。リリースされてから3年8ヶ月0日経っています

<?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)です。リリースされてから2年5ヶ月23日経っています

<?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分寝ました');?>

タイムスタンプ表示も簡単です!

本日のタイムスタンプは1487529456です。

<?php echo "本日のタイムスタンプは", $today->format('U'),"です。";?>

2038年問題も解消!!

2040年のタイムスタンプは2208956400です

<?php $dt = new DateTime("2040-01-01");echo "2040年のタイムスタンプは" ,$dt->format('U'),"です";?>

加減算、足したり引いたりも簡単です!!

元になる時間です。→2011年07月01日 10時30分50秒

そしてその日付に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秒');?>

違う表記方法の加減算

元になる日付です。→2011年07月01日 10時15分20秒

そこで1年2ヶ月3日4時間5分6秒足してみます。→2012-09-04 14:20:26

そして更に6年5ヶ月4日3時間2分1秒引いてみます。→2006-03-31 11:18:25

更に1年2ヶ月3日4時間5分6秒引きます。→2005-01-28 07:13:19
<?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

負数は「-]、正数は「+」

スポンサーリンク