初心者向け!プログラミング講座 【PHP編】『date関数、UNIXタイムスタンプ』
漫画坊主です。
今回は 日付、時刻に関する組込関数や、UNIXタイムスタンプ について勉強したいと思います。
プログラミング初心者の方は本編の 漫画で入門!初心者向けプログラミング講座 を先にご覧下さい!
漫画で入門!初心者向けプログラミング講座【PHP編】#1『PHPとは』
※本編に移る前に注意
私の使用しているパソコンの OS が Windows10 ですので、
スクリーンショットがWindows10 となっております。予めご了承くださいませ。
本編でテキストエディタのスクリーンショットを使用しておりますがこちらは
【Sublime Text 3】を使用しております。
テキストエディタはご自身が使いやすいもので問題ありません。
もしテキストエディタを インストールしていない方 がいましたら下記からインストールできます。
それでは本編開始です!
◆目次
・UNIXタイムスタンプ
-【 time 】
-【 mktime 】
-【 strtotime 】
・日付や時刻の表示
-【 date 】
-【date_default_timezone_get , date_default_timezone_set 】
・date関数のフォーマット
-【date】関数で曜日を日本語表記に変換する方法
・まとめ
◆UNIXタイムスタンプ
それでは【UNIXタイムスタンプ】について勉強しましょう。
【UNIXタイムスタンプ】とは、
協定世界時(UTC)で1970年1月1日(午前0時0分0秒)の時刻からの経過秒数を表すものです。
って言われてもよく分からないですよね…。
恐らく【 UNIXタイムスタンプ 】を実際に確認した方が分かりやすいかと思いますので、
早速ですが、【 UNIXタイムスタンプ 】を取得する組込関数を使ってみましょう!
【 time 】
まずは、こちらのソースをご覧下さい。
この【 time 】という関数は 現在の日時の【 UNIXタイムスタンプ 】を取得 します。
例えば今日が 2018年1月1日(午前0時0分0秒)だった場合
1970年1月1日(午前0時0分0秒)から 2018年1月1日(午前0時0分0秒)までの
経過した秒数 を出力します。
特に引数も不要で【 time ( )】と記述するだけで
現在の日時の【 UNIXタイムスタンプ 】を取得します。
では実際に出力したものがこちらです。
結果を見てもイマイチピンと来ないかもしれませんが、
これだけの秒数が経過していると考えたらすごいですね!
【 mktime 】
続いては、【 mktime 】関数を使ってみましょう!
こちらのサンプルソースをご覧下さい。
この【 mktime 】関数は、指定した日時の【UNIXタイムスタンプ】を取得 します。
引数は左から(時、分、秒、月、日、年)で、右から順に省略できます。
引数がない場合、現在の日時の【UNIXタイムスタンプ】を取得しますが、
エラーが発生 しますので、現在の日時の【UNIXタイムスタンプ】を取得する場合は
先程の【 time 】関数を使用 しましょう。
では実際にブラウザで出力してみましょう。
指定した日時の【UNIXタイムスタンプ】が取得できています。
先程お話したエラーも【 mktime 】関数(引数なし)で表示されることも分かりました。
【 strtotime 】
続いては、【 strtotime 】関数を使ってみましょう!
この【 strtotime 】関数は、文字列で指定した日時の【UNIXタイムスタンプ】を取得 します。
引数は( String型 )です。
では、こちらのサンプルソースをご覧下さい。
こんな感じに 曜日、日付、昨日、今日、明日、今、1週間前 など
文字で指定するだけで【UNIXタイムスタンプ】を取得 します。
上記の例にある【 +1 week 】や【 -1 month 】の表記は、
【 + 】が現在の日時から未来、【 – 】が現在の日時から過去を意味します。
ではブラウザで確認してみましょう。
正直【UNIXタイムスタンプ】を見ても、よく分からないですよね。
次はこの【UNIXタイムスタンプ】を使用して、日時や時刻を表示したいと思います。
ちなみに上記以外にも 文字列の指定方法 はありますのでPHPの公式サイトで確認しましょう。
こちらのリンクから公式サイトに飛べます! 日付と時刻の書式 ※別ウィンドウで開きます
◆日付や時刻の表示
先程までは、【UNIXタイムスタンプ】を表示する関数を紹介してきましたが、
今度は【UNIXタイムスタンプ】で取得した秒数から
指定した日時フォーマットに変換する 関数について勉強していきましょう。
【 date 】
【UNIXタイムスタンプ】を変換するのに使用する関数には【 date 】を使用します。
第1引数には 日時のフォーマットを指定し、
第2引数には 【UNIXタイムスタンプ】を指定します。
形にするとこんな感じです。
date( “日時フォーマット” , UNIXタイムスタンプ );
では、下記のソースをご覧ください。
上記のように、【date】関数に引数を指定します。
※今回のソースでは第1引数のフォーマットは【年/月/日 時:分:秒】の形式で指定しています。
では実際に結果をブラウザで確認してみましょう。 ※2018/10/16 22時頃に出力しています。
ご覧いただくと分かるかと思いますが、
第2引数で指定した【UNIXタイムスタンプ】が、
第1引数の指定したフォーマットの形式に変換されているのが分かります。
【date_default_timezone_get , date_default_timezone_set 】
続いてはタイムゾーンの設定をしてみましょう。
タイムゾーンとは、世界各地の標準時を決めるときの基準となる【世界標準時(UTC)】のことです。
当ブログでPHPの初期設定をされている方はタイムゾーンの設定が
日本の標準時の【 Asia/Tokyo 】になっているかと思います。
現在設定しているタイムゾーンを確認するには、
【date_default_timezone_get】関数を使用して下さい。
上記で現在設定しているタイムゾーンの確認ができます。
PHPの初期設定についての記事は下記からどうぞ ※別ウィンドウで開きます。
漫画で入門!初心者向けプログラミング講座【PHP編】#2『XAMPP と PHP の環境構築』
では、先程【date】関数で使用したソースを、【世界標準時(UTC)】で表示すると
どう変化するのかを確認してみましょう。
タイムゾーンの設定に使用する関数ですが、【date_default_timezone_set】を使用します。
引数にはタイムゾーンIDを指定します。
形にすると、date_default_timezone_set( “タイムゾーンID” );
各国のタイムゾーンID については下記のPHPの公式サイトを参考にしてください。
タイムゾーンID一覧 ※別ウィンドウで開きます。
では今回は【世界標準時(UTC)】に設定して確認してみましょう。
世界標準時の【 UTC 】を引数に設定しました。
ではブラウザで結果を確認してみましょう。 ※2018/10/16 22時頃に出力しています。
日付は変化していませんが時刻に変化があるのがわかります。
◆date関数のフォーマット
最後に【date】関数の第1引数のフォーマット指定に使用できる
よく使いそうな 変換文字 ついてまとめてみました。
フォーマットを指定するには【” “】または【’ ‘】で囲う必要があります。
例えば【2018/10/16 22:00:00】の形式で表示するには
date( “Y/m/d H:i:s” , UNIXタイムスタンプ); と記述します。
これを【2018年10月16日 22時00分00秒】の形式で表示するには
date( “Y年m月d日 H時i分s秒” , UNIXタイムスタンプ); と記述します。
これを踏まえていくつかサンプルフォーマットを用意しましたので実際に見てみましょう。
【date】関数で曜日を日本語表記に変換する方法
おまけで【date】関数で曜日を日本語表記に変換する方法 も記載しましたが、
もう少し詳しく解説したいと思います。
まず配列に 表示させたい曜日の文字列 を格納します。
今回の場合ですと、日本語表記なので(日、月、火、水、木、金、土)の順に格納 しています。
ここで気を付けるのが、曜日の最初は日曜日に設定 しなければいけません。
変換文字の【 w (小文字)】は【UNIXタイムスタンプ】の日付から何曜日かを判断し、番号で返します。
この番号が(日 : 0、月 : 1、火 : 2、水 : 3、木 : 4、金 : 5、土 : 6)となります。
なので 配列の[ 0 ]番目は日曜日 にしなければいけませんので注意が必要です。
$配列名[ date(【 w 】を含む文字列 , UNIXタイムスタンプ) ]; で出力が出来ます。
これらを実際に出力するとこうなります。 ※2018/10/16 22時頃に出力しています。
フォーマットについて簡単にまとめると変換文字さえ正しく指定できていれば、
期待通りのフォーマットに出来るということです。
◆まとめ
・関数【 time 】は現在の日時の【 UNIXタイムスタンプ 】を取得する
・関数【 mktime 】は指定した日時の【UNIXタイムスタンプ】を取得する
・関数【 strtotime 】は文字列で指定した日時の【UNIXタイムスタンプ】を取得する
・関数【 date 】は指定した【UNIXタイムスタンプ】を指定したフォーマットの形式に変換する
・【タイムゾーン】は、世界各地の標準時を決めるときの基準となる【世界標準時(UTC)】
以上で 初心者向け!プログラミング講座 【PHP編】
『date関数、UNIXタイムスタンプ』を終了したいと思います。
他にもこんなプログラミング講座も作成しています。
初心者向け!プログラミング講座 【PHP編】『 文字分割【explode】と 文字結合【implode】』
初心者向け!プログラミング講座 【PHP編】『改行、空白、エスケープシーケンス』
最後まで読んで頂きありがとうございました!
◆良かったら息抜きに私の描いた漫画も読んでみて下さい!
漫画坊主の漫画はこちらから
◆プログラミングの勉強を続ける場合はこちらから!
プログラミングの勉強はこちらから