PHPの基礎 - 日時

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2021年3月4日 (木) 13:53時点におけるWiki (トーク | 投稿記録)による版 (→‎日時を取得する(time, date))
ナビゲーションに移動 検索に移動

概要

PHPの組み込み関数において、日時に関する関数を記載する。


日時を取得する(time, date)

日時を指定するフォーマットを取得する。

string date(string format [, int timestamp])

引数で指定したフォーマットで日付文字列を取得する。
2番目の引数で、取得する日時を指定する。省略する場合は、現在の日時を取得する。

引数:
   format  日付のフォーマット
   timestamp  フォーマットの対象となる日時

戻り値:
   フォーマットされた日付文字列


フォーマットの対象となるタイムスタンプで指定可能な範囲は、Fri, 13 Dec 1901 20:45:54 GMTからTue, 19 Jan 2038 03:14:07 GMTまでとなっている。
省略する場合は、time関数で取得できる現在日時の値が対象となる。

下表に、指定可能なフォーマットの種類を示す。

フォーマット 意味
j 日(ゼロパディング無し) 1から31
d 日(ゼロパディング) 01から31
D 曜日(3文字のテキスト形式) MonからSun
l 曜日(フルスペル形式) SundayからSaturday
N ISO-8601形式における曜日の数値表現 1(月曜日)から7(日曜日)
S 英語形式の序数を表すサフィックス(2文字) st、nd、rdまたはth
jと一緒に使用する
w 曜日。数値 0(日曜)から6(土曜)
W ISO-8601形式における月曜日から始まる年単位の週番号(数値) 例: 42(1年の第42週目)
z 年間の通算日(ゼロから開始) 0から365


フォーマット 意味
m 月(ゼロパディング無し) 1から12
n 月(ゼロパディング) 01から12
M 月(3文字のテキスト形式) JanからDec
F 月(フルスペル形式) JanuaryからDecember
t 指定した月の日数 28から31


フォーマット 意味
y 年(2桁の数字) 例: 99、03、10
Y 年(4桁の数字) 例: 1999、2003、2010
o ISO-8601形式の年
Yとほぼ同じであるが、ISO週番号(W)が前年あるいは翌年に属する場合がある点で異なる
例: 1999、2003、2010
L 閏年であるかどうかを表す論理値 1 : 閏年
0 : 閏年ではない


フォーマット 意味
s 秒(ゼロパディング) 00から59
i 分(ゼロパディング) 00から59
h 時(12時間単位、ゼロパディング) 01から12
H 時(24時間単位、ゼロパディング) 00から23
g 時(12時間単位、パディング無し) 1から12
G 時(24時間単位、パディング無し) 0から23
a 午前または午後(小文字) amまたはpm
A 午前または午後(大文字) AMまたはPM
B スウォッチインターネット時間(Swatch) 000から999


フォーマット 意味
e タイムゾーン識別子 例: UTC、GMT、Atlantic / Azores
l サマータイム中かどうか 1 : サマータイム
0 : サマータイムではない
O グリニッジ標準時(GMT)との時間差 例: +0900
T サーバのタイムゾーンの設定 例: EST、MDT ...
Z タイムゾーンのオフセット秒数
UTCの西側のタイムゾーン用のオフセットは常に負である。
UTCの東側のオフセットは常に正である。
-43200から43200


フォーマット 意味
c ISO8601形式の日付 例: 2020-01-01T15:19:21+00:00
r RFC822に基づく日付 例: Thu, 21 Jan 2020 16:01:07 +0200
U Unix時(1970年1月1日0時0分0秒)からの秒数 --


例えば、2020年01月01日のような日付文字列を取得する場合は、date('Y年m月d日');と記述する。
このように、フォーマット文字列で定義されていない文字を記述する場合、単に文字列として表示する。

また、フォーマット文字列と同じ文字において、文字として表示する場合は、¥でエスケープする。

date('Y m d');      --> 2020 01 01
date('Y年m月d日');  --> 2020年01月01日
date('d day');      --> 01 01am20
date('d ¥d¥a¥y');   --> 01 day
date('c');


※注意
文字をエスケープした結果、ダブルクォーテーションで囲まれた文字列の中で特別な意味を持つ文字になることがある(例: ¥n等)
これを避けるには、¥¥nのように¥自身もエスケープする必要がある。

次に、第2引数であるタイムスタンプについても記載する。
第2引数を省略する場合は、初期値としてtime関数で取得できる現在時刻がフォーマットの対象となる。

int time(void)

現在時刻をUnix時刻(1970年1月1日 00:00:00 GMT)からの通算秒として返す。

引数:
   なし

戻り値:
   通算の秒を表す数値


Unix時刻とは、1970年1月1日 00:00:00を0として、1秒経過するごとに1ずつ増加させた値となる。
例えば、この値を使用して取得した値に+60した値は、現在より1分後の時間となる。