libro
www.tuyano.com
初心者のためのPHPプログラミング入門

テキストと日時の操作 (5/5)

作成:2010-12-06 11:32
更新:2010-12-06 11:32

■日時の計算を行う

日時を使った計算を行ってみましょう。ここでは、年月日の値を入力してもらい、今日からその日まで何日あるかを調べてみます。

下にサンプルコードを挙げておきます。入力フィールドに「2011/1/23」というように、年月日をスラッシュで区切って記述し、送信してください。今日からその日までの日数を計算し表示します。

先程、今日から何日後の日付を計算しましたが、ここでも計算の基本は「タイムスタンプに直す」ということです。2つの日付をそれぞれタイムスタンプに直し、その差を計算して1日の秒数で割れば、日数がわかります。
$str = $_POST['text1'];
$d = explode("/",$str);
まず、送信されたテキストをexplodeで/記号で分解し、年月日を配列で用意します。
$t1 = time();
$t2 = mktime(0,0,0,$d[1],$d[2],$d[0]);
続いて、現在の日時と、用意した配列の値の日時のタイムスタンプをそれぞれ用意します。
$n = ceil(($t2 - $t1) / (60 * 60 * 24));
2つのタイムスタンプの差を60×60×24で割れば、日数が出ます。ただし、今回は時分秒まで揃えていないので、端数が出るはずです。そこで、端数を切り上げるのに「ceil」という関数を使っています。これは小数点以下を切りあげた値を返す関数です。

このように、日時関係は、年月日時分秒の値とタイムスタンプを交互にやり取りできる方法さえわかれば、ちょっとした計算など簡単に行えるようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
	if ($_POST != null){
		$str = $_POST['text1'];
		$d = explode("/",$str);
		$t1 = time();
		$t2 = mktime(0,0,0,$d[1],$d[2],$d[0]);
		$n = ceil(($t2 - $t1) / (60 * 60 * 24));
		$result = $str . "は、今日から {$n} 日後です。";
	}
?>
<!DOCTYPE html
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
		xml:lang="ja" lang="ja"> 
	<head> 
		<meta http-equiv="Content-Type"
			content="text/html; charset=UTF-8" /> 
		<title>sample page</title>
	</head>
	<body>
		<h1>Hello PHP!</h1>
		<p><?php echo $result; ?></p>
		<hr>
		<form method="post" action="./index.php">
			<input type="text" name="text1">
			<input type="submit">
		</form>
		<hr>
	</body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る