WEBエンジニアによるキンスレと技術系ブログ

今はまっているゲームと技術系の記事をメインに投稿を続けるブログ

ページ内リンク

【Carbon】使用する方法とよく使う処理まとめ

Carbon とは?

PHPの日付処理用ライブラリです。
詳しくは公式サイトを翻訳しながらご確認ください。
今回の記事では、導入方法とよく使う処理をまとめました。

公式サイト https://carbon.nesbot.com/

Carbonをインストール

・Carbonはcomposerを使用してインストールします。

$ composer require nesbot/carbon

※ Laravelを使用している場合は、標準でインストールされています。
※ またcomposerを使用せず公式サイトから直接ダウンロードも可能

インストール後

インストールを行うと「Carbon.php」ファイルが作成される。
CarbonクラスはDateTimeクラスを継承している。

// Carbon.php
<?php
namespace Carbon;

class Carbon extends \DateTime
{
    // code。。。。
}

Carbon使用時はネームスペースをインポートする。

namespace XXX;

use Carbon\Carbon;

class XXX {
    // code。。。。
}

取得処理

現在日時の取得

$dt = Carbon::now();

現在日時の取得(タイムゾーン有)

$td = Carbon::now(new DateTimeZone('Asia/Tokyo'));

または、
$td = Carbon::now('Asia/Tokyo')

当日の取得

$td = Carbon::today('Asia/Tokyo');

明日の取得

$td = Carbon::tomorrow('Asia/Tokyo');

昨日の取得

$td = Carbon::yesterday('Asia/Tokyo');

文字列から日付型に変換

parse関数を使用する。

$dt = Carbon::parse("2019-01-07");

取得した日付から使用範囲の指定

$td = Carbon::today('Asia/Tokyo');

// 年
$dt->year;

// 月
$dt->month;

// 日
$dt->day;

// 時
$dt->hour;

// 分
$dt->minute;

// 秒
$dt->second;

// 月の日数
$dt->daysInMonth

フォーマット変換処理

format関数を使用する。

表示値とパラメータの関係表

表示値 パラメータ
Y
m
d
H
i
s

使用例

$td = Carbon::today('Asia/Tokyo');

// 年-月-日
$dt->toDateString();
//または、
$dt->format('Y-m-d');

// 時:分:秒
$dt->toTimeString();
//または、
$dt->format('H:i:s');

日付変更処理

日付の足し算・引き算

$td = Carbon::today('Asia/Tokyo');

/* 足し算 */

// 1日後
$dt->addDay(1);

// 1ヶ月後
$dt->addMonth(1);

// 1年後
$dt->addYear(1);

/* 引き算 */

// 1日前
$dt->subDay(1);

// 1ヶ月前
$dt->subMonth(1);

// 1年前
$dt->subYear(1);

比較処理

// 等しい場合true
$first->equalTo($second);

// 等しくない場合true
$first->notEqualTo($second);

// $firstが$secondより後の場合true
$first->greaterThan($second);

// $firstが$second以降の場合true
$first->greaterThanOrEqualTo($second);

// $firstが$secondより前の場合true
$first->lessThan($second);

// $firstが$second以前の場合true
$first->lessThanOrEqualTo($second);

実用例

対象日付が当日より未来かチェック

// 当日
$now_date = Carbon::now('Asia/Tokyo');
// 対象日付
$target_date = Carbon::parse("2019-01-07");

// 対象日付が当日より未来の場合、true
if ($target_date->greaterThan($now_date)) {
    // code。。。
}