ホーム > PHPサンプル > 日付系 > PHP 去年の日付を取得したい
PHPサンプル

UPDATE:2019年06月18日

PHP 去年の日付を取得したい

PHP 去年の日付を取得したい | wepicks!
PHP5 PHP7

去年の日付を取得

去年の日付を取得します。「date()」と「strtotime()」か「mktime()」を組み合わせて取得します。date() は、日時の文字列を返します。オプションでUNIXタイムスタンプを指定すると指定したスイムスタンプの日付や時間を取得します。タイムスタンプを省略すると現在時刻が使用されます。「strtotime()」や「mktime()」は指定したUNIXタイムスタンプの数値を返します。また、DateTimeクラスでも様々な日付や時刻をあらわすことが出来ます。
タイムゾーンの指定
php.ini に記述する場合
date.timezone = Asia/Tokyo
スクリプトに記述する場合
<?php date_default_timezone_set ('Asia/Tokyo'); ?>
※日本時間に合わせます。タイムゾーンに誤りがあると日付系の関数やクラスでエラーが起こる場合があります。
使用する関数やクラス

書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列

書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列

書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す

書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列

サンプル

※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。


現在から去年の日付を取得

date() + strtotime()で取得

date()関数strtotime()関数 を組み合わせることで、任意の日付を取得できます。

date()関数 は、指定した日付や時刻のフォーマット文字列から、現在や任意の日付や時間の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() が理解できる日付/時刻フォーマット文字列

タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。
UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列');
UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列');
strtotime() に指定する最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列

2019/05/16 に実行した場合。

結果は

2018-05-16

となります。

例では「-1 year」という書式の英文形式フォーマットですが、strtotime()は以下のような英文形式フォーマットも扱えます。

  • 「now(今)」
  • 「today(本日)」
  • 「tommorw(明日)」
  • 「yesterday(昨日)」
  • 「+1 day(1日後 -符号もOK)」
  • 「+1 week(1週間後 -符号もOK)」
  • 「+1 month(1カ月後 -符号もOK)」
  • 「+1 year(1年後 -符号もOK)」
  • 「+1 seconds(1秒後 -符号もOK)」
  • 「+1 min(1分後 -符号もOK)」
  • 「+1 hours(1時間後 -符号もOK)」

さらに詳細を知りたい方
strtotime() が理解できる英文形式フォーマット文字列

date() + mktime()で取得

mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);

2019/05/16 に実行した場合。

結果は

2018-05-16

となります。

DateTimeクラスで取得

DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は現在の日時になります。DateTimeクラスに指定する日時の書式は DateTime('2019-01-02 03:04:05'); というような形です。また、英文形式フォーマット文字列も理解可能で、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列

DateTimeクラスのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列

2019/05/16 に実行した場合。

結果は

2018-05-16

となります。

  • 「now(今)」
  • 「today(本日)」
  • 「tommorw(明日)」
  • 「yesterday(昨日)」
  • 「+1 day(1日後 -符号もOK)」
  • 「+1 week(1週間後 -符号もOK)」
  • 「+1 month(1カ月後 -符号もOK)」
  • 「+1 year(1年後 -符号もOK)」
  • 「+1 seconds(1秒後 -符号もOK)」
  • 「+1 min(1分後 -符号もOK)」
  • 「+1 hours(1時間後 -符号もOK)」

さらに詳細を知りたい方
DateTimeクラス が理解できる英文形式フォーマット文字列

指定日から去年の日付を取得

date() + strtotime()で取得

2018/05/01 を指定日にした場合。

結果は

2017-05-01

となります。

例では「2018-05-01」形式の日付フォーマットですが、strtotime()は以下のような日付フォーマットも扱えます。

  • 「02-01-2020(日-月-年)」
  • 「02.01.2020(日.月.年)」
  • 「01/02/20(月/日/年)」
  • 「20-01-02(年-月-日)」
  • 「01/02/2020(月/日/年)」
  • 「Jan. 02, 2020(3文字英語月. 日, 年)」
  • 「02 Jan 2020(日 3文字英語月 年)」

さらに詳細を知りたい方
strtotime() が理解できる日付/時刻のフォーマット文字列

date() + mktime()で取得

2018/05/01 を指定日にした場合。

結果は

2017-05-01

となります。

DateTimeクラスで取得

2018/05/01 を指定日にした場合。

結果は

2017-05-01

となります。

例では「2018-05-01」形式の日付フォーマットですが、DateTimeクラスは以下のような日付フォーマットも扱えます。

  • 「02-01-2020(日-月-年)」
  • 「02.01.2020(日.月.年)」
  • 「01/02/20(月/日/年)」
  • 「20-01-02(年-月-日)」
  • 「01/02/2020(月/日/年)」
  • 「Jan. 02, 2020(3文字英語月. 日, 年)」
  • 「02 Jan 2020(日 3文字英語月 年)」

さらに詳細を知りたい方
DateTimeクラス が理解できる日付/時刻のフォーマット文字列

サンプルコード

– サンプル Click Here ! –

実行結果 [2019/05/16 現在の場合]

去年の日付
 ・2018-05-16
 ・2018-05-16


去年の年
 ・年。4 桁の数字。 2018
 ・年。2 桁の数字。 18

去年の月
 ・月。フルスペルの文字。 May
 ・月。数字。先頭にゼロをつける。 05
 ・月。3 文字形式 May
 ・月。数字。先頭にゼロをつけない。 5
 ・指定した月の日数。 31

去年の日
 ・日。二桁の数字(先頭にゼロがつく場合も) 16
 ・日。先頭にゼロをつけない。 16

去年の曜日
 ・曜日。3文字のテキスト形式。 Wed
 ・曜日。フルスペル形式。 Wednesday
 ・曜日。数値。 3

– サンプル Click Here ! –


タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2012年3月1日
最終更新日:2019年06月18日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpsample-date-yearago/trackback/

page top