PHPで3つの文字列(年・月・日)を組み合わせて次の日付を計算する方法
PHPでは、カンマ区切りの3つの文字列(年・月・日)から、基準日よりも後の日付を求めたいケースがあります。このような場合、3重のループ(foreach)を使って年・月・日の組み合わせを順番に調べ、基準日より後の日付が見つかった時点でその値を変数に格納する方法が有効です。
実装のポイント
まず、explode() 関数を使ってカンマ区切りの文字列を配列に変換します。その後、年・月・日の3重ループで組み合わせを生成し、文字列として比較することで次の日付を特定します。見つかったら break 3 ですべてのループを抜け出すのがポイントです。
サンプルコード
以下がPHPのコード例です。
<!DOCTYPE html>
<html>
<body>
<?php
$givenDate = '2018-04-28';
$fiveYears = '2018,2019,2020,2021,2022';
$fiveMonths = '03,05,07,08,09';
$fiveDays = '25,26,27,28,29';
$fYears = explode(',', $fiveYears);
$fMonths = explode(',', $fiveMonths);
$fDays = explode(',', $fiveDays);
$nextDate = null;
foreach($fYears as $yr) {
foreach($fMonths as $mn) {
foreach($fDays as $dy) {
$t = $yr.'-'.$mn.'-'.$dy;
if($t > $givenDate) {
$nextDate = $t;
break 3;
}
}
}
}
if($nextDate) {
echo '次の日付の値は = ' . $nextDate;
}
else {
echo '日付が見つかりません。';
}
?>
</body>
</html>実行結果
上記のコードを実行すると、以下のような出力が得られます。
次の日付の値は = 2018-05-25
コードの解説
このコードでは、基準日「2018-04-28」に対して、利用可能な年・月・日のリストから最初に一致する未来の日付を探しています。年・月・日の順にループ処理を行うため、日付は時系列の早い順に生成され、基準日を超えた最初の組み合わせ「2018-05-25」が結果として返されます。文字列同士の比較は「YYYY-MM-DD」形式であれば正しく機能するため、strtotime() などに変換する必要はありません。
-
AndroidでOffsetDateTime APIクラスを使って月の日付・年間通算日・曜日を取得する方法
このチュートリアルでは、java.timeパッケージのOffsetDateTime APIクラスを使用して、Androidアプリで「月の日(日付)」「年間通算日」「曜日」を取得して画面に表示する方法を解説します。 OffsetDateTimeクラスとは OffsetDateTimeは、Java 8で導入された新しい日時API(JSR-310)の一部で、UTCからのオフセット情報(例:+09:00)を含んだ日付と時刻を表すクラスです。タイムゾーンのオフセットを考慮した正確な日時処理が必要な場合に便利で、getDayOfWeek()、getDayOfMonth()、getDayOfYear()な
-
PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法
date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your