PHPで扱う日付と時刻の基礎:DateTimeImmutableの活用例
2024.12.07
PHPで日付時刻関連の値を扱うときは、DateTimeImmutableクラスを使うのが便利です。
DateTimeクラスでも良いんですが、PHPの公式マニュアルによると、
警告 DateTime クラスのメソッドをコールすると、 そのインスタンスにカプセル化された情報が変更されます。 そうした変更を防ぎたい場合には、新しいオブジェクトを作るために clone 演算子を使わなければいけません。 オブジェクトの変更を防ぐ、望ましい挙動をデフォルトで実現するには、 DateTime ではなく、 DateTimeImmutable を使います。
とのことなので、基本的には DateTimeImmutable クラスを使うようにしておくのが良さそう。
$date = new DateTimeImmutable();
echo $date->format("Y-m-d H:i:s"); // 2024-12-07 09:13:22
MySQL等のデータベースのdatetime型の値を引っ張ってきて、そのまま突っ込めば書式の整形も簡単。
フォーマットの指定は、DateTimeInterface::formatを参照。
// $db_datetime に MySQLデータベースのdatetime型の値が入ってると仮定
$date = new DateTimeImmutable($db_datetime);
echo $date->format("Y.m.d(D)"); // 2024.12.07(Sun)
n分後、n日後などの加算、n分前、n日前などの減算も簡単。
modifierの書式についてはサポートする日付と時刻の書式を参照。
$date = new DateTimeImmutable();
echo $date->modify("+5 minutes")->format("Y-m-d H:i:s"); // 5分後
echo $date->modify("+1 days")->format("Y-m-d H:i:s"); // 1日後
echo $date->modify("-5 minutes")->format("Y-m-d H:i:s"); // 5分前
echo $date->modify("-1 days")->format("Y-m-d H:i:s"); // 1日前
「次の日曜日」みたいな指定ができるのはありがたいケースが時々ありますね。
$date = new DateTimeImmutable();
echo $date->modify("sunday")->format("Y-m-d H:i:s"); // 次の日曜日;
値の現在時刻との比較とかも簡単。
$current_time = new DateTimeImmutable(); // 現在時刻
// $db_datetime に MySQLデータベースのdatetime型の値(例えば特定のURLの表示有効期限)が入ってると仮定
if($current_time > new DateTimeImmutable($db_datetime)){
// 有効期限切れのエラー処理
die('URLの有効期限切れです');
}
OGP画像作成を効率化:PHPを使った自動生成方法を解説
2024.11.21
SNSシェアに欠かせないOGP画像、毎回手作業で作成するのは手間がかかりますよね。本記事では、PHPを使って記事タイトルを含むOGP画像を自動生成する方法を解説します。テンプレート画像を活用した簡単な手順をぜひお試しください。
PHPによるCSRF対策入門:トークン生成から認証までの流れを解説
2024.11.19
フォーム送信時のセキュリティを高めるためには、CSRF対策が欠かせません。本記事では、PHPでのトークン生成から認証チェックまで、実装手順を具体的に解説します。
PHPとPerlでファイルパーミッションを変更する方法(chmod関数)
2024.11.16
PHPとPerlには、ファイルのパーミッションを変更するためのchmod関数が標準で用意されています。この記事では、PHPとPerlそれぞれのchmod関数を使ったファイルパーミッション変更の基本的な使い方を紹介します。
PHPでNotionのページを更新する方法
2023.11.24
NotionのページをPHPから直接更新できる方法をご紹介します。本記事では、Notion APIを使用して、タスクの名前やカテゴリ、ステータスなどのプロパティを簡単に更新する方法を解説します。