忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

現在、新しいコメントを受け付けない設定になっています。

PHPのmktime関数に存在しない日付を指定した場合の挙動

PHPのmktime関数に存在していない日付をしてした場合、一体どんなことになるのか?
その謎にせまるべく、われわれ取材班は実験を決行した。

実験に使われた日付は以下の通りである。
2013年2月30日

そう、そんな日付は存在しない。
2013年の2月は28日までである。
その次の日は3月1日になるのだ。

にもかかわらず、2013年2月30日という日付を以下の通りに指定してみる。
そしてmktime関数を実行してみるという試みである。

$year = 2013;
$month = 2;
$day = 30;
$hour = 12;
$minute = 0;
$second = 0;
$timestamp = mktime($hour, $minute, $second, $month, $day, $year);
echo $timestamp;

これをすることで一体何が起こるだろうか。
存在しない日付を指定するという暴挙に出たのである。
それも確信犯である。
存在していないことを知っていながら、その日付を指定したのである。

それが一体どのような結果をもたらすのだろう。
これが今回の実験の趣旨である。

PHPがぶっ壊れるだろうか?
あるいはfalseが返ってくるだろうか?
あるいは警察につかまって死刑になるだろうか。

どれもまったく違う。
実際は以下の結果が表示された。

1362193200

なんと!すいちょうけん!

普通のタイムスタンプの値のように見受けれられる。

これは一体どういうことだろう?

罠だろうか?

私はこの、以下にもタイムスタンプのように見える数値を以下のようにして、日付に変換してみるという荒業を決行した。

$timestamp = "1362193200";
echo date('Y-m-d H:i:s', $timestamp);

こ、こ、これは!

信じられない結果がコンピューターからはじき出された。

2013-03-02 12:00:00

これはつまり、2月28日の二日後の日付ではないか。

つまり2月30日という存在しない幻の日付は、正しく変化されたのである。

正しく?

それが本当に正しいことなのか?

私はアゴをガクガクと振るわせて、熱に浮かされているような状態になりながら、以下の実験を継続して決行した。

$year = 2013;
$month = 13;
$day = 30;
$hour = 12;
$minute = 0;
$second = 0;
$timestamp = mktime($hour, $minute, $second, $month, $day, $year);
echo $timestamp;

なんと前人未踏の以下の日付である。

2013年13月30日12時0分0秒

13月!

これはさすがに警察に捕まるのではないだろうか。
そして死刑になるのではないか。
あるいはPHPの使用禁止令が出るだろうか?

しかし私は真実を明らかにするために、すべてのルールを踏み越えて、その荒行を決行する。

不気味に以下の数値がコンピューターから出力される。

1391050800

これは一体何を意味するのか?

その数値を日付に変換するプログラムを実行させてみる。
なんとコンピューターは以下の結果をはじき出した。

2014-01-30 12:00:00

驚くではないか!
13月は1月に変更され、そして、年が一年増えているではないか!

どうやらそう、PHPが気を利かせて配慮してくれたようである。

「やれやれバカな数値を入力しやがって。人間のぼけなすめ。だがまあ許してやろう。
正しい数値に変換して、そして結果を返してやろうではないか。
さながらそう、バカな子供の失敗の尻拭いを優しくしてあげる母親のように」

というようなことを考えて、どうやらPHPは配慮してくれているようだ。

うん、分かった。理解した!

新橋でリンパマッサージ
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

HN:
No Name Ninja
性別:
非公開

カテゴリー

P R