- 更新日: 2019年07月01日
- 公開日: 2017年08月22日
phpで現在日時を取得する方法!
phpでは現在時刻(現在日時)を任意のフォーマットで取得することができます。また、その方法はいくつか用意されており、今回はその方法をサンプルソースを交え、わかりやすく解説していきます。
phpで日付に関する処理を行うには、date()関数をまずは知らなければなりません。date()関数を使用することで、現在の日付取得を行うことができます。
date関数
date()関数の書式は下記になります。
date(フォーマット)
記述例
echo date("Y/m/d H:i:s")
結果としては下記のようになります。
"2017/08/21 12:40:32"
引数で指定する代表的な日付のフォーマット一覧
フォーマット | 内容 | 出力結果(例) |
---|---|---|
Y | 西暦(4桁) | 2017 |
y | 西暦(2桁) | 17 |
l | うるう年: 1、平年: 0 | 0 |
m | 月(0埋め) | 08 |
n | 月(0埋め無し) | 8 |
M | 月 英語表記 | August |
F | 月 英語表記(略) | Aug |
d | 日付(0埋め) | 08 |
j | 日付(0埋め無し) | 8 |
l | 曜日 英語表記 | Monday |
D | 曜日 英語表記(略) | Mon |
w | 曜日 (日曜: 0 → 土: 6) | 1 |
H | 時刻 24時間表記 (0埋め) | 09 |
G | 時刻 24時間表記 (0埋め無し) | 9 |
h | 時刻 12時間表記 (0埋め) | 09 |
g | 時刻 12時間表記 (0埋め無し) | 9 |
i | 分 | 02 |
s | 秒 | 02 |
date()関数の引数では上記の記号を組み合わせることで、任意のフォーマットで時刻を取得することができます。
日付取得(今日)
echo date("Y/m/d");
結果
"2017/08/21"
現在日時
echo date("Y/m/d H:i:s");
結果
"2017/08/21 03:50:38"
現在時刻 + 今日の曜日
echo date("Y/m/d - M (D) H:i:s");
結果
"2017/08/21 - Aug (Mon) 03:50:38"
となります。
日付がずれる場合
これまでの時刻の出力結果が自身のPCの日付とずれている方もいらっしゃるかと思います。 php.iniの設定ファイルの場所を確認する方法!【mac/linux】 を御覧いただき、php.iniを編集することで、デフォルトのタイムゾーンを指定することができます。 php.iniをいじるはちょっと...という方は、 日付処理を行う前に、date_default_timezone_set()関数を実行することで、日付のタイムゾーンを変更することができます。
echo date("Y/m/d - M (D) H:i:s");
date_default_timezone_set('Asia/Tokyo');
echo date("Y/m/d - M (D) H:i:s");
結果
"2017/08/21 - Aug (Mon) 03:55:30"
"2017/08/21 - Aug (Mon) 12:55:30"
DateTimeクラス
上記までの方法以外でも、DateTimeクラスを利用する方法があります。 下記のように、DateTimeクラスを呼び出し、formatメソッドを使用することで日付取得を行うことができます。
$date = new DateTime('now');
echo $date->format('Y年m月d日 H時i分s秒');
結果
"2017年08月21日 23時01分05秒"
DateTimeクラスのコンストラクタ引数として'now'を与えることで、現在時刻を取得することができます。format()メソッドの引数のフォーマットは、この記事の一覧表と同じものを使用することができます。また、引数には'now'以外にも、日時を指定することが可能です。
$date = new DateTime('2017-08-22 23:44:44');
echo $date->format('Y年m月d日 H時i分s秒');
結果
"2017年08月22日 23時44分44秒"
※ DateTimeクラスはphp.iniでタイムゾーンを指定するか、date_default_timezone_set()関数でタイムゾーンを指定しなければエラーとなります。
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがだったでしょうか。phpで現在時刻を取得する方法について解説しました。 フォーマットの記号は多数用意されており、全て覚える必要はありません。また、どのプログラミング言語でも共通ですが、日付を使用したプログラムは少し複雑になりがちです。 実装する際には細心の注意を払いましょう。
CodeCamp提供のWebマスター(PHP)コース
当メディアを運営しているCodeCampではWebマスターコース(PHP)を現役エンジニアのマンツーマンレッスンという形で提供しています。このコースの特徴は
- バックからフロントまでエンジニアとしての基礎スキルを着実に獲得できる
- プログラミング未経験から転職・フリーランスへ挑戦
- 実際にWebサービスをを開発するのでポートフォリオとしても使用できる
詳細はこちらから確認してみてください!▶︎https://codecamp.jp/courses/master_web
- この記事を書いた人
- ベンジャミン吉澤