phpのdate関数・strtotime関数で現在時刻と指定時刻を比較
php関連記事
PHPのmb_send_mailでメール送信時に、はしご高「髙」やたつさき「﨑」など旧漢字や丸数字の日本語文字化け対策をする
MySQL/MariaDBのデータをPHP側で暗号化・復号する
phpで10進数と16進数、2進数、8進数の変換と0埋め表記
WordPressの条件分岐タグでページを判別する
PHPでpreg_splitの文字化けを回避しながらテキストを改行ごとに区切ってHTMLメールをつくる
WordPressテーマアップロード時に「辿ったリンクは期限が切れています。 もう一度お試しください。」と表示される
PHPで画像アップロード時に比率を保ったまま縮小する
phpで郵便番号を正規表現で3桁・ハイフン・4桁で出力するfunction
phpで電話番号のハイフンを正規表現で出力するfunction
date関数で日付を取得する
php
date_default_timezone_set('Asia/Tokyo'); echo date("Y/m/d H:i:s"); //「2020/03/10 18:00:00」 $w = date("w"); $week_name = array("日", "月", "火", "水", "木", "金", "土"); echo date("Y/m/d") . "($week_name[$w])\n"; //「2020/03/10(火)」
date_default_timezone_set('Asia/Tokyo');
で、タイムゾーンを指定する。
y:年(2桁表記)
m:月(2桁表記)
n:月(先頭にゼロつけない)
d:日(2桁表記)
H:時間(24時間単位)
h:時間(12時間単位)
i:分
s:秒
t:指定した月の日数
w:曜日番号(0[日曜]から6[土曜]の値)
strtotime関数で現在時刻を取得
php
$now = strtotime(date("G:i:s"));
date(“G:i:s”)で今の時間を取得しています。
これをこのまま比較したいところですがフォーマットが違うと比較できないので、strtotime()を使ってUNIXタイムスタンプに変換しています。
こうすることでフォーマットを揃えて比較ができるようにしています。
比較対象を文字列から取り出す
php
$now = strtotime(date("G:i:s")); $open1 = '11:30~14:00'; $o1 = explode("~" , $open1);
下記の記事でやった方法で文字列から比較するための時間を取り出します。
あまり頻度は高くないでしょうがこうすることで営業時間が変更になったとしても、基準の文字列を変更するだけで数式の変更の必要がなくなります。
あとは比較するだけです。
現在時刻と指定時間を比較する
php
$now = strtotime(date("G:i:s")); $open1 = '11:30~14:00'; $o1 = explode("~" , $open1); if ($now >= strtotime(date($o1[0])) && $now <= strtotime(date($o1[1]))){ $timeflag = "open"; }else{ $timeflag = "close"; }
if文で比較して表示するものを変えれば完成です。
「11:30」と「11:30:00」がフォーマット的に同じなのか気になったので調べたらどちらも同じ数値でした。
“11:30:00″ int(1493026200)
コメント