0
0

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 1 year has passed since last update.

【laravel】日付間の差分をDBへ登録したい

Last updated at Posted at 2022-12-19

日付間の差分をDBへ登録したい

サイト作成をしていて、入力したDateカラムの情報を用いて
日付間の差分を登録したいと考えました。

DBへはユーザーが日付をそれぞれ入力(start_daylast_day)し、
それらの差分(何日間か)を計算してDBへ登録したい。

$start_day = '2022-12-12';
$last_day = '2022-12-31';
$interval = ($last_day)-($start_day);
echo $interval // 19

のようなイメージ。
型などが影響してか、Date型同士の引き算がlaravelではエラーになってしまったので
そのやり方を考えた。

strtotime関数でフォーマットする

ユーザーが入力した日付データを使って、実際にその差分(日数)を出してみる。

public function store(IdealWeightRequest $request) {

        $idealWeight = new IdealWeight();

        $idealWeight->start_day = $request->start_day;
        $idealWeight->last_day = $request->last_day;

        $startDay = strtotime($idealWeight->start_day);
        $lastDay = strtotime($idealWeight->last_day);
        $idealWeight->period = ($lastDay - $startDay) / (60 * 60 * 24);

}

strtotime関数は2038年問題の際に動作に影響が出てしまう恐れがあるそうなので
Datetime関数を使うのが良いとか。
ですが今回は一旦strtotime関数でやってみました。
また余裕があったらDatetimeやCarbonなどでチャレンジしてみます。

追記

@sgrs38 さんより教えていただきました!
いつもありがとうございます!

Cabonの場合

$sabun = Carbon::create('2022-12-12')->diffInDays(Carbon::create('2022-12-31'));
public function store(IdealWeightRequest $request) {

        $idealWeight = new IdealWeight();

        $idealWeight->start_day = $request->start_day;
        $idealWeight->last_day = $request->last_day;

        $idealWeight->period = Carbon::create($idealWeight->last_day)->diffInDays(Carbon::create($idealWeight->start_day));

}
0
0
1

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?