phpのdate関数・strtotime関数で現在時刻と指定時刻を比較

プロモーションが含まれています

phpのdate関数・strtotime関数で現在時刻と指定時刻を比較

phpのdate関数・strtotime関数で現在時刻と指定時刻を比較

php関連記事

関連記事をもっとみる

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:年(4桁表記)
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で文字列を区切り文字で配列に分割するexplode
phpとjQueryで文字列に含まれる、コンマや改行コードなどを区切り文字として配列にする方法 php関連記事 phpで文字列を区切り文字で配列に分割する php これだけで$op...

あまり頻度は高くないでしょうがこうすることで営業時間が変更になったとしても、基準の文字列を変更するだけで数式の変更の必要がなくなります。
あとは比較するだけです。

現在時刻と指定時間を比較する

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”  int(1493026200)
“11:30:00″ int(1493026200)

関連記事

timestamp型で7日後・7日前を計算する
timestamp型で7日後・7日前を計算する。A non well formed numeric value encounteredエラーが出たのでその対処法も。 php関連記事 timestamp...

コメント

タイトルとURLをコピーしました