Carbon中国語ドキュメント
8370 ワード
Carbonは日付と時刻処理パッケージです.ここでは、Laravelフレームワークでよく使われる日付と時刻処理パッケージの使用を見てみましょう.
PHPアプリケーションを作成するには、日付と時間を処理する必要があります.この記事では、Carbon–PHP DateTimeクラスから継承されたAPI拡張子について説明します.これにより、処理日と時間がより簡単になります.Laravelでデフォルトで使用される時間処理クラスがCarbonです.
CarbonネーミングスペースのCarbonクラスには、上記のコードクリップが表示されます.
インストール
ComposerでCarbonをインストールできます.
PS:Laravelプロジェクトはこのパッケージがデフォルトでインストールされているため、上記のコマンドを再度実行する必要はありません.使用するには、名前空間を介してCarbonをインポートして使用する必要があります.毎回完全な名前を指定する必要はありません.
現在の時刻を取得now()メソッドとともに現在の日付と時刻を取得できます.パラメータを指定しない場合は、PHP構成のタイムゾーンが使用されます.
異なるタイムゾーンを使用する場合は、パラメータとして有効なタイムゾーンを渡す必要があります.
now()のほか、today()、tomorrow()、yesterday()などの静的関数も用意されていますが、いずれも00:00:00:00:00:00:00:00:
以上の出力結果は、実際にはCarbonタイプの日時オブジェクトです.
文字列タイプの日付を取得するには、次のコードを使用します.
日付タイプが文字列に変換されると、デフォルトではCarbonメソッドは日付時間オブジェクトを返します.オブジェクトですが、echoを直接使用して結果を出力できます.なぜなら_toStringマジックメソッド.ただし、文字列に変換するには、toDateStringまたはtoDateTimeStringメソッドを使用します.
日付を作成するには、個別の年月日を使用して日付を作成することもできます.
さらに、最後のパラメータとして有効なタイムゾーンを渡すこともできます.日付操作日付操作は、add(増加)またはsub(減算)が、増加または減算する単位に続くことによって行うことができる.たとえば、指定した日数を日付に追加したい場合は、addDaysメソッドを使用します.さらに、modifyメソッドが提供され、パラメータフォーマットは+または-加算値および単位である.したがって、現在の日付を1年増やしたい場合は、+1 yearを渡すことができます.
日付比較Carbonでは、次の方法で日付を比較できます.min-最小日付を返します.max–最大日付を返します.eq–2つの日付が等しいかどうかを判断します.gt–最初の日付が2番目の日付より大きいかどうかを判断します.lt–最初の日付が2番目の日付より小さいかどうかを判断します.gte–最初の日付が2番目の日付より大きいかどうかを判断します.lte–最初の日付が2番目の日付以下であるかどうかを判断します.
日付が2つの日付の間にあるかどうかを判断するには、between()メソッドを使用します.3番目のオプションパラメータは、比較が等しいかどうかを指定し、デフォルトはtrueです.
また、名前から意味を理解するための補助方法も提供されています.
diffForHumans
「1ヶ月前」は「30日前」よりも読みやすく、多くの日付ライブラリでこの一般的な機能が提供されています.日付が解析された後、次の4つの可能性があります.比較時間が現在のデフォルト時間を超える場合: 将来の時間を現在のデフォルト時間と比較する場合: 比較値が別の値を超えた場合1時間前5月前 比較値が別の値の後1時間後5月後 2番目のパラメータをtrueに設定して、diffForHumans(Carbon$other,true)などの修飾語を削除できます.
PHPアプリケーションを作成するには、日付と時間を処理する必要があります.この記事では、Carbon–PHP DateTimeクラスから継承されたAPI拡張子について説明します.これにより、処理日と時間がより簡単になります.Laravelでデフォルトで使用される時間処理クラスがCarbonです.
namespace Carbon;
class Carbon extends \DateTime
{
// code here
}
CarbonネーミングスペースのCarbonクラスには、上記のコードクリップが表示されます.
インストール
ComposerでCarbonをインストールできます.
composer require nesbot/carbon
PS:Laravelプロジェクトはこのパッケージがデフォルトでインストールされているため、上記のコマンドを再度実行する必要はありません.使用するには、名前空間を介してCarbonをインポートして使用する必要があります.毎回完全な名前を指定する必要はありません.
use Carbon\Carbon;
現在の時刻を取得now()メソッドとともに現在の日付と時刻を取得できます.パラメータを指定しない場合は、PHP構成のタイムゾーンが使用されます.
echo Carbon::now(); //2016-10-14 20:21:20
異なるタイムゾーンを使用する場合は、パラメータとして有効なタイムゾーンを渡す必要があります.
//
echo Carbon::now('Europe/London'); //2016-10-14 20:21:20
//
echo Carbon::now(new DateTimeZone('Europe/London'));
now()のほか、today()、tomorrow()、yesterday()などの静的関数も用意されていますが、いずれも00:00:00:00:00:00:00:00:
echo Carbon::now(); // 2016-10-14 15:18:34
echo Carbon::today(); // 2016-10-14 00:00:00
echo Carbon::tomorrow('Europe/London'); // 2016-10-14 00:00:00
echo Carbon::yesterday(); // 2016-10-14 00:00:00
以上の出力結果は、実際にはCarbonタイプの日時オブジェクトです.
Carbon {#179 ?
+"date": "2016-06-14 00:00:00.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
文字列タイプの日付を取得するには、次のコードを使用します.
echo Carbon::today()->toDateTimeString();
echo Carbon::yesterday()->toDateTimeString();
echo Carbon::tomorrow()->toDateTimeString();
日付タイプが文字列に変換されると、デフォルトではCarbonメソッドは日付時間オブジェクトを返します.オブジェクトですが、echoを直接使用して結果を出力できます.なぜなら_toStringマジックメソッド.ただし、文字列に変換するには、toDateStringまたはtoDateTimeStringメソッドを使用します.
echo Carbon::now()->toDateString(); //2016-10-14
echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50
parse ( Carbon ):
echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('2016-10-15 00:10:25')->toDateTimeString(); //2016-10-15 00:10:25
echo Carbon::parse('today')->toDateTimeString(); //2016-10-15 00:00:00
echo Carbon::parse('yesterday')->toDateTimeString(); //2016-10-14 00:00:00
echo Carbon::parse('tomorrow')->toDateTimeString(); //2016-10-16 00:00:00
echo Carbon::parse('2 days ago')->toDateTimeString(); //2016-10-13 20:49:53
echo Carbon::parse('+3 days')->toDateTimeString(); //2016-10-18 20:49:53
echo Carbon::parse('+2 weeks')->toDateTimeString(); //2016-10-29 20:49:53
echo Carbon::parse('+4 months')->toDateTimeString(); //2017-02-15 20:49:53
echo Carbon::parse('-1 year')->toDateTimeString(); //2015-10-15 20:49:53
echo Carbon::parse('next wednesday')->toDateTimeString(); //2016-10-19 00:00:00
echo Carbon::parse('last friday')->toDateTimeString(); //2016-10-14 00:00:00
日付を作成するには、個別の年月日を使用して日付を作成することもできます.
$year = '2015';
$month = '04';
$day = '12';
echo Carbon::createFromDate($year, $month, $day); //2015-04-12 20:55:59
$hour = '02';
$minute = '15':
$second = '30';
echo Carbon::create($year, $month, $day, $hour, $minute, $second); //2015-04-12 02:15:30
echo Carbon::createFromDate(null, 12, 25); //
さらに、最後のパラメータとして有効なタイムゾーンを渡すこともできます.日付操作日付操作は、add(増加)またはsub(減算)が、増加または減算する単位に続くことによって行うことができる.たとえば、指定した日数を日付に追加したい場合は、addDaysメソッドを使用します.さらに、modifyメソッドが提供され、パラメータフォーマットは+または-加算値および単位である.したがって、現在の日付を1年増やしたい場合は、+1 yearを渡すことができます.
echo Carbon::now()->addDays(25); //2016-11-09 14:00:01
echo Carbon::now()->addWeeks(3); //2016-11-05 14:00:01
echo Carbon::now()->addHours(25); //2016-10-16 15:00:01
echo Carbon::now()->subHours(2); //2016-10-15 12:00:01
echo Carbon::now()->addHours(2)->addMinutes(12); //2016-10-15 16:12:01
echo Carbon::now()->modify('+15 days'); //2016-10-30 14:00:01
echo Carbon::now()->modify('-2 days'); //2016-10-13 14:00:01
日付比較Carbonでは、次の方法で日付を比較できます.min-最小日付を返します.max–最大日付を返します.eq–2つの日付が等しいかどうかを判断します.gt–最初の日付が2番目の日付より大きいかどうかを判断します.lt–最初の日付が2番目の日付より小さいかどうかを判断します.gte–最初の日付が2番目の日付より大きいかどうかを判断します.lte–最初の日付が2番目の日付以下であるかどうかを判断します.
echo Carbon::now()->tzName; // America/Toronto
$first = Carbon::create(2012, 9, 5, 23, 26, 11);
$second = Carbon::create(2012, 9, 5, 20, 26, 11, 'America/Vancouver');
echo $first->toDateTimeString(); // 2012-09-05 23:26:11
echo $first->tzName; // America/Toronto
echo $second->toDateTimeString(); // 2012-09-05 20:26:11
echo $second->tzName; // America/Vancouver
var_dump($first->eq($second)); // bool(true)
var_dump($first->ne($second)); // bool(false)
var_dump($first->gt($second)); // bool(false)
var_dump($first->gte($second)); // bool(true)
var_dump($first->lt($second)); // bool(false)
var_dump($first->lte($second)); // bool(true)
$first->setDateTime(2012, 1, 1, 0, 0, 0);
$second->setDateTime(2012, 1, 1, 0, 0, 0); // Remember tz is 'America/Vancouver'
var_dump($first->eq($second)); // bool(false)
var_dump($first->ne($second)); // bool(true)
var_dump($first->gt($second)); // bool(false)
var_dump($first->gte($second)); // bool(false)
var_dump($first->lt($second)); // bool(true)
var_dump($first->lte($second)); // bool(true)
日付が2つの日付の間にあるかどうかを判断するには、between()メソッドを使用します.3番目のオプションパラメータは、比較が等しいかどうかを指定し、デフォルトはtrueです.
$first = Carbon::create(2012, 9, 5, 1);
$second = Carbon::create(2012, 9, 5, 5);
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
また、名前から意味を理解するための補助方法も提供されています.
$dt = Carbon::now();
$dt->isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();
$dt->isSameDay(Carbon::now());
$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
$overTheHill = Carbon::now()->subYears(50);
var_dump($born->isBirthday($noCake)); // bool(false)
var_dump($born->isBirthday($yesCake)); // bool(true)
var_dump($overTheHill->isBirthday()); // bool(true) -> default compare it to today!
diffForHumans
「1ヶ月前」は「30日前」よりも読みやすく、多くの日付ライブラリでこの一般的な機能が提供されています.日付が解析された後、次の4つの可能性があります.
1
5
1
,5
echo Carbon::now()->subDays(5)->diffForHumans(); // 5
echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1
$dt = Carbon::createFromDate(2011, 8, 1);
echo $dt->diffForHumans($dt->copy()->addMonth()); // 1
echo $dt->diffForHumans($dt->copy()->subMonth()); // 11
echo Carbon::now()->addSeconds(5)->diffForHumans(); // 5
echo Carbon::now()->subDays(24)->diffForHumans(); // 3
echo Carbon::now()->subDays(24)->diffForHumans(null, true); // 3