strtotime関数の使い方と時刻のフォーマット

strtotime関数は第一引数に日付/時刻の文字列を「絶対日時」または「相対日時」で指定します。第二引数は第一引数で「相対日時」を指定した場合に基準となる日付/時刻のタイムスタンプを指定します。
返り値はタイムスタンプで、失敗するとfalseを返します。

strtotime(日付/時刻の文字列, 基準となる日付/時刻のタイムスタンプ);

strtotime関数はdate関数と組み合わせて使用します。date関数の第二引数で指定したタイムスタンプを第一引数のフォーマットの文字列で表示します。
まずstrtotime関数の第一引数に「絶対日時」を指定した場合です。

<?php
//絶対日時指定
$dt = '2021/09/10 20:56:17';

echo date('Y年m月d日 H時i分s秒', strtotime($dt));
?>

実行結果は以下の通り、絶対日時を指定したフォーマットで表示します。

2021年09月10日 20時56分17秒

次にstrtotime関数の第一引数に「相対日時」を指定した場合です。

<?php
//相対日時指定
$dt = '+3 day 20:56:17';

echo date('Y年m月d日 H時i分s秒', strtotime($dt));
?>

実行結果は以下の通り、現在から3日後の指定時刻を指定したフォーマットで表示します。

2021年09月13日 20時56分17秒

strtotime関数の第一引数に「相対日時」を指定した場合、第二引数に基準となる日時がタイムスタンプで指定できます。

<?php
//相対日時指定
$dt = '+3 day 20:56:17';
//基準日時指定
$tomorrow = strtotime('tomorrow');

echo date('Y年m月d日 H時i分s秒', strtotime($dt, $tomorrow));
?>

実行結果は以下の通り、基準日の明日から3日後の指定時刻を指定したフォーマットで表示します。

2021年09月14日 20時56分17秒

strtotime関数の第一引数に時刻のみを指定した場合、日付は現在になります。

<?php
$dt = '20:56:17';

echo date('Y年m月d日 H時i分s秒', strtotime($dt));
?>

時刻のフォーマットは12時間制にして午前と午後の区別は「am」「pm」を使用することもできます。

<?php
$dt = '8:56:17 pm';

echo date('Y年m月d日 H時i分s秒', strtotime($dt));
?>

実行結果はどちらも以下の通りです。

2021年09月10日 20時56分17秒

ただし以下のように時刻のフォーマットが誤っている場合、strtotime関数はfalseを返しdate関数で正しく表示できません。

<?php
$dt = 'pm 8:56:17';

echo date('Y年m月d日 H時i分s秒', strtotime($dt));
?>

実行結果は以下の通りです。

1970年01月01日 00時00分00秒
タイトルとURLをコピーしました