PHP
JavaScript
moment.js

PHPにMoment.jsライクなライブラリを作成

More than 1 year has passed since last update.

PHPでの日付処理って扱いづらいですよね

普段JavaScriptばかりやっててMoment.jsを使うことが多いので
そのままPHPに移植したら楽になるんじゃ?って思いつきでPHPに移植しました。
全部そのまま作るのは時間がかかりそうだったので必要な部分だけのちょっとしたものですがMoment.phpとしてGistで公開しています。
https://gist.github.com/ria3100/bd6258acf84d865c0fb643a300918523

example.php
<?php
// 現在の日時
$now = new Moment();

// 指定の日時
$m = new Moment('2017-09-27');

// 一部を取得
$m->year();                       // 2017
$m->month();                      // 09
$m->date();                       // 27
$m->day();                        // 'Wed'

// 日付フォーマットで返す
$m->format();                     // '2017-09-27'
$m->format('Y年m月d日');           // '2017年09月27日'

// 一部を変更
$m->year(2018)->format();         // '2018-09-27'
$m->month(10)->format();          // '2018-10-27'
$m->date(28)->format();           // '2018-10-28'
// 曜日を0〜6で指定してその週の日付に変更
$m->day(1)->format();             // '2018-10-26'

// 月末日を取得
$m->daysInMonth();                // 30

// 閏年か
$m->isLeapYear();                 // false

// 加算
$m->add(1, 'years')->format();    // '2018-09-27'
$m->add(1, 'months')->format();   // '2018-10-27'
$m->add(1, 'days')->format();     // '2018-10-28'

// この後比較するためのインスタンスを作成
$future = new Moment('2018-09-27');
$past = new Moment('2016-09-27');

// 差を取得
$m->diff($future, 'years');       // 1
$m->diff($future, 'months');      // 1
$m->diff($future, 'days');        // 31

// 等しいか  $m == $future
$m->isSame($future);              // false
$m->isSame('2018-09-27');         // false

// $future
$m->isBefore($future);            // false
$m->isBefore('2018-09-27');       // false

$m->isSameOrBefore($future);      // false
$m->isSameOrBefore('2018-09-27'); // false

$m->isAfter($future);             // true
$m->isAfter('2018-09-27');        // true

$m->isSameOrAfter($future);       // true
$m->isSameOrAfter('2018-09-27');  // true

$m->isBetween($past, $future);              // true
$m->isBetween('2016-09-27', '2018-09-27');  // true