リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

7-2. php実践②日付と時刻の関数

晴れるかと思ったら雨降ったり、雨降ってたかと思ったら晴れたり、、洗濯物が溜まってしまうゆえ晴れてほしい。。

本日は、現在の日付や時刻を表示したり、入力フォームから送信された日付の妥当性をチェックする関数を勉強します。

1-1.time関数

PHPは日付と時刻の取得に、UNIXタイムスタンプを使用します。UNIXタイムスタンプは1970年1月1日午前0時を基点とする経過秒数です。現在のタイムスタンプ(今が、1970年1月1日午前0時から何秒たったか)を求めるには、『time関数』を使います。
$変数=time();

time関数を使ってコードを書いてみると

<?php
$now=time();
echo $now;
?>


1970年1月1日午前0時から、1471668555秒経った今の時間がでます。
f:id:taro-blog2323:20160820135259p:plain

1-2.mktime関数

特定日時のタイムスタンプを作成したい場合は『mktime関数』を使用します。
$変数=mktime(時間,分,秒,月,日,年);

今日までのタイムスタンプを表示させてみます。
<?php
$timestamp=mktime(0,0,0,8,20,2016);
echo $timestamp;
?>


こちらも同様に秒数で表示されます。
f:id:taro-blog2323:20160820140413p:plain

1-3.date関数

time関数、mktime関数で指定した日(1970年1月1日から何秒たったか)の出力方法はわかったのですが、秒数で出されてもなんのこっちゃわかりません。
『date関数』を使うとUNIXタイムスタンプを日付にすることができます。また、time関数やmktime関数などと組み合わせることで、何日後や何位前の日付を取得することができます。

$変数=date($format, $timestamp);

$formatは、日や週などの指定子で数字4桁の年や月の日などのフォーマットを指定できます。

今日の日付を出してみます。

<?php
$timestamp = time();
$this_day= date( 'Y年m月d日 H時i分s秒' , $timestamp);
echo $this_day;
?>

はい、こちら。ちゃんとでた。ほっ。
f:id:taro-blog2323:20160820142549p:plain

フォーマット指定子はリスに発狂するくらいめちゃくちゃ書いてあったのですが、とりあえず使ったものだけ抜粋します。

指定子 概要
Y 数字4桁の年
m 数字2桁の月、先頭にゼロをつける
d 数字2桁の日、先頭にゼロをつける
H 数字2桁の時、24時間単位
i 数字2桁の分、先頭にゼロをつける
s 数字2桁の秒、先頭にゼロをつける

今回は今日の日時を指定しましたが、time関数+1週間分の秒数を加算するなどをすると、一週間後とかその前とかも指定できます。

2-1.chackdate関数

会員登録時などで誕生日を入力させるプログラムを作るとします。そのとき、ユーザーが有効な値を送信したか(2月31日とか入れてしまったり)を調べる必要がでてくると思います。
そこで使用するのが『checkdate関数』です。
checkdate関数に引数として月、日、年を指定してTRUE、FALSEで値を返すことで妥当性をチェックします。

$変数=checkdate(月,日,年);

日付の有効性をチェックしてみます。
<?php
$month =2;
$day =31;
$year =2012;

if(!checkdate($month,$day,$year))
{
echo"正しい日付を入力してください";
}
?>


結果として2月31日は存在しないので、以下の表示がでます。
f:id:taro-blog2323:20160820144632p:plain


ここまできたら、なんか簡単なフォームができそうな気がしてきた…
今回は以上です。次はファイルの操作を学んでいきます。