概要
状態:-
閲覧数:2,257
投稿日:2014-10-12
更新日:2014-10-30
日付・時刻に関する関数は、大きく3つに分かれる
1.タイムスタンプを取得する関数
・time関数、mktime関数、strtotime関数
2.引数で与えられたタイムスタンプに基づき、整形表示する関数
・date関数、gmdate関数
3.その他の関数
・cgeckdate関数
・西暦1970年1月1日からの経過秒数
time関数とmktime関数とstrtotime関数の違い
1.タイムスタンプを取得する関数
・time関数、mktime関数、strtotime関数
2.引数で与えられたタイムスタンプに基づき、整形表示する関数
・date関数、gmdate関数
3.その他の関数
・cgeckdate関数
UNIXのタイムスタンプ
・西暦1970年1月1日からの経過秒数
違い
time関数とmktime関数とstrtotime関数の違い
time() | mktime() | strtotime() |
---|---|---|
現在時刻のタイムスタンプを取得 | 指定日時のタイムスタンプを取得 | 「指定した時点」から「指定した時点」までのタイムスタンプを取得 |
1.タイムスタンプを取得する関数
違い
time関数とmktime関数とstrtotime関数の違い
time()
・現在時刻のタイムスタンプを取
・西暦1970年1月1日から、実行したときの日時までの秒数を、取得
mktime()
・指定日時のタイムスタンプを取得
strtotime()
・「指定した時点」から「指定した時点」までのタイムスタンプを取得
三者の違い
time() | mktime() | strtotime()) |
---|---|---|
現在時刻のタイムスタンプを取得 | 指定した日付のタイムスタンプを取得 | 「指定した時点」から「指定した時点」までのタイムスタンプを取得 |
mktime
mktime関数
・引数で指定した日時のUNIXタイムスタンプを取得
mktime (時, 分, 秒, 月, 日, 年, サマータイム);
・引数は右から順に省略することが可能・省略された引数は、ローカルの日付と時刻にセットされる
・PHP 5.1 以降、引数なしでコールすると mktime() は E_STRICT notice を発行 → time() 関数を利用
引数 | 概要 | 記述例 | 備考 |
---|---|---|---|
1 | 時 | 22 | - |
2 | 分 | 18 | - |
3 | 秒 | 10 | - |
4 | 月 | 8 | - |
5 | 日 | 5 | - |
6 | 年 | 2011(2 桁または 4 桁の値を指定可能) | - |
7 | サマータイム | - | PHP 5.1.0 以降、このパラメータは廃止 |
strtotime
strtotime関数
・指定時点からのUNIXタイムスタンプを取得
・略した場合は、現時点からのタイムスタンプを取得
int strtotime(string 日時[, int 時点])
※[,時点]は省略可・指定時点から「どこまで」を、設定可
・「どこまで」は、指定書式(英文形式の日付時刻)で、設定
第2引数 が指定されていない場合は?
・現在日時に自動変換される
・つまり、nowを指定しても、nowを省略しても同じ挙動を示す
strtotime関数において特別な意味を持つ「フォーマット文字」一覧
・第一引数に指定する文字列
・英文形式の日時を表わす単語
単語 | 使用方法 |
---|---|
day | 日を表わす |
week | 日を1週間単位で表わす |
month | 月を表わす |
year | 年を表わす |
hour | 時刻を表わす |
minute | 分を表わす |
second | 秒を表わす |
now | 現在時刻を表わす |
tomorrow | +1 day と同様 つまり、「明日」 |
yesterday | -1 day と同様 つまり、「昨日」 |
first | +1 と同様 |
next | +1 と同様[br] ※但しバージョン4.4より前のPHPでは、誤って+2として計算される |
last | -1 と同様 |
2.引数で与えられたタイムスタンプに基づき、整形表示する関数
2つの選択肢
・「基準とする時間」に応じて、大きく2つの選択肢がある
時刻=「ローカルタイムゾーン」基準
・日本地域に合わせた時間)を使う
「GMTグリニッジ標準時」基準
・「ローカルタイムゾーン」は「GMTからの時差」となる
・(PHPを利用する際は)、「ローカルタイムゾーン」=「(GMTグリニッジ標準時)+時差」になる
・日本の場合は、「ローカルタイムゾーン」=「(UTC協定世界時≒GMTグリニッジ標準時)+9」
- | ローカルタイムゾーン(GMTからの時差) | UTC協定世界時≒GMTグリニッジ標準時 |
---|---|---|
メリット | +9時間という計算をしなくてもよい | 全世界どこにあるサーバでも、その場所の時間(タイムゾーン)に関係なく同じ値を返す。つまり、どのタイムゾーンであろうと「GMT+9時間」という日時は常に「日本」を表わすため、例えば海外レンタルサーバ(海外のタ イムゾーンに時計を合わせている)を利用することになった場合でも、GMTを使用していればスクリプトを書き換える必要はない |
デメリット | サーバ内の時計がどのタイムゾーンに合わせてあるかにより、影響を受ける | +9時間という計算をしなければ、日本地域に合わせた時刻とならない |
ローカルタイムゾーン (UTC協定世界時≒GMTグリニッジ標準時)+時差(9)
- | ローカルタイムゾーン | (UTC協定世界時≒GMTグリニッジ標準時)+時差(9) |
---|---|---|
コード | date | gmdate |
9時間の時差
+9時間=タイムスタンプに変換すると32400秒
・タイムスタンプは単位が「秒」なので、9時間分の秒数を足せばよい
・time() + 9 * 60 * 60; // 時間数 * 分数 * 秒数
・time() + 9 * 3600; // 時間数 * 分×秒数
・time() + 32400; // オフセット秒数
・32400のように時差を秒数で表わしたものをオフセット秒数と言う
・「date('Z'); // タイムゾーンのオフセット秒数を得る」でも取得可能
・日本のオフセット秒数は"+32400"
date関数において特別な意味を持つ「フォーマット用記号(文字)」」一覧
date関数において特別な意味を持つ「フォーマット用記号(文字)」一覧
・第一引数に指定する文字列
・第一引数に指定する文字列
フォーマット文字 | 変換 | 戻り値 |
---|---|---|
y | 年(2桁表記) | 04 |
Y | 年(4桁表記) | 2004 |
n | 月(先頭にゼロを付けない) | 1~12 |
m | 月(2桁表記) | 01~12 |
M | 月(3文字形式) | Jan~Dec |
F | 月(フルスペルの文字) | January~December |
j | 日(先頭にゼロを付けない) | 1~31 |
d | 日(2桁表記) | 01~31 |
w | 曜日(整数) | 0(日曜)~6(土曜) |
D | 曜日(3文字のテキスト) | Mon~Sun |
l | 曜日(フルスペル形式) | Sunday~Saturday |
a | 午前または午後(小文字) | amまたはpm |
A | 午前または午後(大文字) | AMまたはPM |
g | 時(12時間単位) | 1~12 |
h | 時(12時間単位、2桁表記) | 01~12 |
G | 時(24時間単位) | 0~23 |
H | 時(24時間単位、2桁表記) | 00~23 |
i | 分(2桁表記) | 00~59 |
s | 秒(2桁表記) | 00~59 |
L | 閏年であるか否か | 1または0 |
t | その月の日数 | 28~31 |
S | 日付の英語形式の序数に対応した接尾辞 | st,nd,rd,th |
z | 年間の通算数 | 0~366 |
W | ISO-8601月曜開始の年単位の週番号 | 23(週目) |
O | グリニッジ標準時(GMT)との時間差 | +0900 |
r | RFC822フォーマットされた日時 | Sat,5Jun200418:44:59+0900 |
T | サーバのタイムゾーン | 東京 (標準時) |
B | SwatchInternetTime | 000~999 |
I | サマータイム制か否か | 1または0 |
U | Unixタイムからの秒数 | タイムスタンプと同じ |
Z | タイムゾーンのオフセット秒数 | -43200~43200 |