日付・時刻関数
| 解説 | 英文形式の日時をUNIXタイムスタンプに変換する |
|---|---|
| 書式 | int strtotime( string time [, int now ] ) |
int strtotime( string 日時 [, int タイムスタンプ ] ) |
|
| 引数 |
time
英文形式の日時
|
now
タイムスタンプ
|
|
| 返値 | 英文形式の日時から生成されたタイムスタンプ/-1(PHP5.1.0以前)またはFALSE(PHP5.1.0以降) |
strtotime()は、引数で指定された文字列をタイムスタンプに変換します。
time
日時
now
タイムスタンプ
strtotime()の日時指定はGNUという日付記法に準拠します。詳しくはGNUマニュアルというGNU全般のマニュアルの中の Date Input Formats に記載されています。
日本語サイトも探してみましたので参考にして下さい。
英文形式の指定方法
まず、英文形式の書式が、
(「時:分:秒」)「日」「月の名前」「年」「時:分:秒」
という形式になります。最初の「時:分:秒」に()が付いていますが、これは省略可能を意味します。
| 用語 | 使用方法 |
|---|---|
| 時:分:秒 | 書式の一番前か一番後ろのどちらかに記述します。省略した場合は00:00:00として扱われます。 |
| 日 | 日付数値で指定します。 01 という形式でも 1 という形式でも扱う事ができます。 |
| 月の名前 | 月を英語で指定します。先頭3文字、フルスペルの両方が利用可能です。 |
| 年 | 西暦で指定します。4桁、2桁ともに利用可能です。2桁の場合は 70 〜 99 を 1970年 〜 1999年 まで、0 〜 69 を 2000年 〜 2069年として扱います。 |
さらに、weekやhourといったような単語を指定する事もでき、これらは上記の書式の前後に書くことができます。
この単語は演算をする事ができ、例えば
+ 1 hour
とした場合は1時間後を表わします。ちょっと便利ですね。ここに挙げるもの以外にも演算に使用できる単語がありますが、とりあえず代表的なものを紹介します。その他は前述のマニュアルを参照して下さい。
| 単語 | 使用方法 |
|---|---|
day |
日を表わす |
week |
日を1週間単位で表わす |
month |
月を表わす |
year |
年を表わす |
hour |
時刻を表わす |
minute |
分を表わす |
second |
秒を表わす |
now |
現在時刻を表わす |
tomorrow |
+1 day と同様 つまり、「明日」 |
yesterday |
-1 day と同様 つまり、「昨日」 |
first |
+1 と同様 |
next |
+1 と同様 ※但しバージョン4.4より前のPHPでは、誤って+2として計算されます。 |
last |
-1 と同様 |
サンプルスクリプト
簡単な利用例
<?php
$now = strtotime("now"); // now は現在時刻を意味する
// tomorrow は +1 day つまり明日を意味する
$tomorrow = strtotime("tomorrow");
echo '現在時刻:'.date( 'Y年m月d日 H時i分s秒', $now )."<br />\n";
echo '明日の日付:'.date( 'Y年m月d日', $tomorrow );
?>
出力結果
現在時刻:2008年12月02日 03時58分53秒
明日の日付:2008年12月03日
明日の日付:2008年12月03日
日時を表わす単語の簡単な利用例
英文形式で日付を指定
<?php
//英文形式の書式を指定してタイムスタンプを取得する
$timestamp = strtotime("05 Jun 2004");
echo date( 'Y/m/d (l)', $timestamp );
?>
出力結果
2004/06/05 (Saturday)
日時の演算
<?php
$timestamp = strtotime("+1 week"); // 1週間後を指定
echo date( 'Y年m月d日', $timestamp );
?>
出力結果
2008年12月09日
演算で1週間後の日付を求める事ができます。
複数の演算
<?php
// 1週間と2日、4時間2分後
$timestamp = strtotime("+1 week 2 days 4 hours 2 seconds");
echo date( 'Y年m月d日 H時i分s秒', $timestamp );
?>
出力結果
2008年12月11日 07時58分55秒
next、lastの使用方法
<?php
$timestamp1 = strtotime("last Monday"); //前の月曜日
$timestamp2 = strtotime("next Month"); //再来月
echo date( 'Y年m月d日', $timestamp1 )."<br>\n";
echo date( 'Y年m月d日', $timestamp2 );
?>
出力結果
2008年12月01日
2009年02月02日
2009年02月02日


