技術資料

PHPで扱う日付と時刻の基礎:DateTimeImmutableの活用例

2024.12.07

PHP

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

PHPによるCSRF対策入門:トークン生成から認証までの流れを解説

2024.11.19

フォーム送信時のセキュリティを高めるためには、CSRF対策が欠かせません。本記事では、PHPでのトークン生成から認証チェックまで、実装手順を具体的に解説します。

PHP

PHPとPerlでファイルパーミッションを変更する方法(chmod関数)

2024.11.16

PHPとPerlには、ファイルのパーミッションを変更するためのchmod関数が標準で用意されています。この記事では、PHPとPerlそれぞれのchmod関数を使ったファイルパーミッション変更の基本的な使い方を紹介します。

Perl PHP

PHPでNotionのページを更新する方法

2023.11.24

NotionのページをPHPから直接更新できる方法をご紹介します。本記事では、Notion APIを使用して、タスクの名前やカテゴリ、ステータスなどのプロパティを簡単に更新する方法を解説します。

Notion API PHP

阿部辰也へのお仕事の依頼・お問い合わせ

お名前 *必須
会社名
メールアドレス *必須
電話番号
URL
お問い合わせのきっかけ
お問い合わせの内容 *必須
個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP