PHPでLaravelのnow()を再現しよう | 現在時刻を取得する方法

Laravelの now() ヘルパー関数は、開発者にとって非常に便利な機能です。

しかし、一部の開発者は、PHP標準の関数で同様の機能を実現できるとは気付いていないかもしれません。

もし、あなたがLaravel以外のPHPプロジェクトで現在時刻を取得したい場合、どのようにすれば良いのでしょうか?

この記事では、Laravelの now() ヘルパー関数のように、PHPで簡単に現在時刻を取得する方法をご紹介します。

PHPの標準関数を駆使して、Laravelの便益を得る方法を学びましょう。さらに、カスタマイズや拡張も容易です。

それでは、始めていきましょう。

PHPで現在時刻を取得するサンプルコード

<?php

// 現在の日付と時刻を取得
$currentDateTime = date('Y-m-d H:i:s');
echo "現在の日付と時刻は: " . $currentDateTime . "\n"; // 現在の日付と時刻は: 2023-09-05 13:19:41

$date = new DateTime('now');
echo $date->format('Y年m月d日 H時i分s秒') . "\n"; // 2023年09月05日 13時19分41秒

$interval = DateInterval::createFromDateString('1 day');
$date->add($interval);
echo $date->format('Y年m月d日 H時i分s秒') . "\n"; // 2023年09月06日 13時19分41秒

このコードは2種類の現在時刻を取得する方法を実行しています。

まずは、date() 関数を使用して現在の日付と時刻をフォーマットし、それを echo ステートメントで表示します。

その次に new DateTime('now') を使用することで DateTimeクラスを呼び出す事ができます。 DateIntervalを使用することで日付の加算や減算することが可能になります。

上記のコードで日付がズレる場合にはタイムゾーンの設定が必要になります。 php.ini で設定を行うか、以下のようにPHPコードでタイムゾーンを変更する方法も存在します。

<?php
echo date('Y-m-d H:i:s') . "\n"; // 2023-09-05 13:31:44
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s') . "\n"; // 2023-09-05 22:31:44

Laravelでのnow()の実装

ちなみに、Laravelで使用できる now() 関数はヘルパー関数として用意されているものです。

こちらの実装方法を確認してみると Carbon を使用している事がわかります。

if (! function_exists('now')) {
    /**
     * Create a new Carbon instance for the current time.
     *
     * @param  \DateTimeZone|string|null  $tz
     * @return \Illuminate\Support\Carbon
     */
    function now($tz = null)
    {
        return Date::now($tz);
    }
}

コード内で実行されている Dateクラスについては Illuminate\Support\Facades\Date が使用されています。

前半で紹介したサンプルコード以外にも、こちらの Carbonを使用することで柔軟な日付表示に対応することができます。

公式ドキュメント: https://carbon.nesbot.com

最後に

以上、PHPでLaravelのnow()関数のように現在日時や時刻を表示する方法でした。

柔軟な表示に対応するにはCarbonを使用するのが良い選択ですが、PHP標準の機能を活用する事でシンプルな現在日時などを表示する事がわかるかと思います。

この方法を活用してご自分のプロジェクトに活用していただけたら幸いです。

今回も、お疲れ様でした。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA