0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Carbonを使ってみる

Last updated at Posted at 2020-09-04

環境
初書:2020/09/04
PC:macOS 10.15.6
php 7.4.9
Composer: v1.10.10
carbon: v2.39

Carbonとは

時間関係の処理をまとめてくれるライブラリ

インストール

composerは設定済みとして話を進めていく

ターミナルで以下を実行する

% composer require nesbot/carbon

使い方

newするだけ。

index.php
use Carbon\Carbon;

$time = new Carbon();
echo $time; //2020-09-04 16:00:21
echo Carbon::now(); // 2020-09-04 16:00:21。この場合はnewすらする必要はない

なお、タイムゾーンはdate_default_timezone_set('Asia/Tokyo');で設定できる。
(…が、これで設定してもいいのだろうか?)

主な使い方については下記ページの方がまとめてくれているので、こちらを参考に。。。

PHPで日付時刻処理を書くならCarbonを使うべき

追記:ミリ秒の取得方法だけ見当たらなかったので記述

$time = new Carbon();
echo $time . "." . substr("00000".$time->micro, -6 , 3); // 2020-09-04 21:44:19.592

テストする場合

開発環境で、一時間ずらしたり、一日ずらしたりする必要がある時

$knownDate = Carbon::create(2020, 9, 1, 11, 26, 13);
Carbon::setTestNow($knownDate);

echo Carbon::now(); //2020-09-01 11:26:13

こんな感じで、Carbon::setTestNowに指定したい日時を入れるとその時間帯に変更してくれる。

ただし、時間が完全に固定されるため、時間がかかることを想定している場合での使用には使えない。

echo Carbon::now(); // 2020-09-04 16:30:49
sleep(10);
echo Carbon::now(); // 2020-09-04 16:30:59

$knownDate = Carbon::create(2020, 9, 1, 11, 26, 13);
Carbon::setTestNow($knownDate);

echo Carbon::now(); // 2020-09-01 11:26:13
sleep(10);
echo Carbon::now(); // 2020-09-01 11:26:13

終わりに

公式サイトをみると、かなり色んな日付計算ができるみたいなので、一度見てみてもいいかもしれない(全部英語だけど)
https://carbon.nesbot.com/docs/#api-week

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?