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

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

作成:2010-12-06 10:52
更新:2010-12-06 10:52

■日時を扱う主な関数

続いて、日時について説明しましょう。時間というのは、コンピュータの中と一般の世界でかなり扱いが違います。コンピュータの中では、時間は「ある基準となる日時からの経過」によって表現されます。

PHPでは、日時は「タイムスタンプ」と呼ばれる値で表されます。これは、1970年1月1日午前0時ちょうどからの経過秒数で示したものです。この整数の値が、日時を表す際のもっとも基本となるものです。

ただし、そんな数値では人間はなんだかわかりませんから、それをもとにして、年月日や時分秒の値として日時をとりせるようにする関数が用意されています。

・現在のタイムスタンプを得る
$変数 = time();
まずは、基本のタイムスタンプを得る関数です。これで、今現在のタイムスタンプの値が得られます。

・日時の要素を配列で得る
$変数 = getdate( タイムスタンプ );
この関数が、日時利用の基本といってよいでしょう。これは、引数にタイムスタンプの値を入れると、年月日時分秒のそれぞれの値を連想配列にして返すものです。引数を省略すると、今の時刻の値を返してくれます。返される連想配列に用意される主な要素は以下のようになります。

year    
mon    
mday    
hours    
minutes    
seconds    
wday    曜日(0~6の整数)

・日時の値からタイムスタンプを得る
$変数 = mktime( 時, 分, 秒, 月, 日, 年 );
今度は逆です。年月日時分秒の数字を元に、その時刻のタイムスタンプの値を調べる関数です。一応、引数が6つもありますが、実は必須なのは最初の1つ目だけ。以降は省略すると現在の日時の値が自動的に当てはめられます。

では、簡単な利用例をあげておきましょう。下のサンプルは、入力フィールドに日数を書いて送信すると、今日からその日数後の日付を計算して表示するものです。考え方はとても簡単。

まずtimeで現在のタイムスタンプを取得し、それに指定された日数の秒数(60×60×24×日数)を足して指定された日数後のタイムスタンプを計算し、最後にgetdateでそのタイムスタンプの年月日を得ればおしまいです。途中でタイムスタンプというただの整数に変換してから計算すれば、意外と簡単でしょう?

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

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

●プログラム・リスト●

<?php
	if ($_POST != null){
		$num = $_POST['text1'] * 1;
		$t = time() + (60 * 60 * 24 * $num);
		$d = getdate($t);
		$result = "今日から" . $num . "日後は、" .
			$d['year'] . "年" . $d['mon'] . "年" .
			$d['mday'] . "日 です。";
		
	}
?>
<!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プログラミング入門」に戻る