以前仕事で勤怠管理システムを構築しました。
勤怠管理システムといえば、時間を扱うことが中心でしたので、
今回の記事では”date関数“について、簡単な使い方と実例を書きたいと思います。
※筆者は”PHP Version 7.4.6″を使用しています。
バージョンの違いにより、動作結果が違う場合がありますのでご注意ください。
date関数の使いかた
まずはテキストエディタを開き、下記コードを入力して保存しましょう。
※文字コードはUTF-8。
保存フォルダ場所:C:\xampp\htdocs\test
ファイル名 :study_date.php
<?php
print date('Y-m-d H:m:s'); //年-月-日 時;分;秒を表示
?>
xamppを起動して、http://localhost/test/study_date.phpにアクセスします。
“西暦-月-日 時:分:秒“が表示されましたね。
表示した時分秒がパソコンとあっていない場合は、xamppからphp.iniを編集して日本時間を使うように指定しましょう。 (下記の記事に設定方法を参考にしてください)
引数で変わる表示内容
ちなみにカッコ内(引数)の書き方で表示する文字が変わります。
(例)
・date(‘y-m-d h:m:s’)…西暦(2桁)-月-日 時(12h表記):分:秒
・date(‘w’) …日曜日の場合0、月曜日の場合1・・・土曜日の場合6
などなど…
沢山ありますので、他にも知りたい方は下記ページを参考にどうぞ。
PHPでdate関数をつかった実例
今回のdate関数は、実際の勤怠システムでもよく使用されます。
一部を実例として挙げます。
まずは、出勤時間を表示させましょう。
<?php
$start_time = '08:12:34'; //8時12分34秒を代入
print '出勤時間:'.$start_time; //$start_timeの中身を表示
?>
上記コードは、時間を文字列として$start_timeに代入し、画面に表示しています。
次に退勤時間を表示させましょう。
ここで、退勤時間は、study_date.phpにアクセスした時間としますので、date関数を使います。
<?php
$start_time = '08:12:34'; //8時12分34秒を代入
$end_time = date('H:m:s'); //現在時刻(時分秒)を代入
print '出勤時間:'.$start_time; //$start_timeの中身を表示
print '<br>'; //改行して・・・
print '退勤時間:'.$end_time; //$end_timeの中身を表示
?>
http://localhost/test/study_date.phpにアクセスすると、退勤時間が表示されました。
以上、date関数の基本的な使い方を紹介しました。
おまけ 勤務時間の表示
ついでに、出勤時間と退勤時間の差である、勤務時間を表示させましょう。
<?php
$start_time = '08:12:34'; //8時12分34秒を代入
$end_time = date('H:m:s'); //現在時刻(時分秒)を代入
print '出勤時間:'.$start_time; //$start_timeの中身を表示
print '<br>'; //改行して・・・
print '退勤時間:'.$end_time; //$end_timeの中身を表示
print '<br>'; //改行して・・・
$work_time_sec = strtotime($end_time)-strtotime($start_time); //退勤時間から開始時間を引いて、勤務時間(秒)を求める
print '勤務時間:'.$work_time_sec/60/60; //勤務時間(秒)を60で割って分とし、さらに60で割ると、時間となる
?>
strtotime関数が出てきましが、この関数は、引数に指定した文字列(日時)を
1970年1月1日 00:00:00 UTC からの経過秒数に変換して戻り値を返す関数です。
10進数表記となる為、非常に見にくいと思います。
1=1時間の為、0.25=15分となるので、注意が必要です。
見やすくする場合の一例としては以下があります。
<?php
$start_time = '08:12:34'; //8時12分34秒を代入
$end_time = date('H:m:s'); //現在時刻(時分秒)を代入
print '出勤時間:'.$start_time; //$start_timeの中身を表示
print '<br>'; //改行して・・・
print '退勤時間:'.$end_time; //$end_timeの中身を表示
$work_time_sec = strtotime($end_time)-strtotime($start_time); //退勤時間から開始時間を引いて、勤務時間(秒)を求める
$work_time_hour = floor($work_time_sec/3600); //勤務時間(秒)を3600で割ると、時間を求め、小数点を切り捨てる
$work_time_min = floor(($work_time_sec-($work_time_hour*3600))/60); //勤務時間(秒)から時間を引いた余りを60で割ると、分を求め、小数点を切り捨てる
$work_time_s = $work_time_sec-($work_time_hour*3600+$work_time_min*60); //勤務時間(秒)から時間を引いた余りを60で割ると、分を求め、小数点を切り捨てる
print '<br>'; //改行して・・・
print '勤務時間:'.$work_time_hour.':'; //時 表示
print $work_time_min. ':'; //分 表示
print $work_time_s ; //秒 表示
?>
無事、勤務時間の表示ができました。
お疲れさまでした!