質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

2495閲覧

Laravel Carbonを使用した日付の差

creative_09

総合スコア80

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/03/23 14:58

LaravelでCarbonを使用した日付の差を計算し出力したいのですがうまくいきません。

$now = Carbon::now(); $start = $product->start_date; dump($now); //2020-03-23 23:53:08 dump($start); //2020-06-25 00:00:00 $dt = $start->diffInSeconds($now); echo "スタートまで残り" . Carbon::parse($dt)->format('Y年m月d日 H時i分s秒');

結果
Carbon\Carbon @1584975188 {#433 ▼
date: 2020-03-23 23:53:08.665368 Asia/Tokyo (+09:00)
}
Illuminate\Support\Carbon @1593010800 {#458 ▼
date: 2020-06-25 00:00:00.0 Asia/Tokyo (+09:00)
}
スタートまで残り1970年04月04日 00時06分51秒

求める結果は
スタートまで残り0年03月02日 23時53分08秒
のように$startまでの時間を表示したいです。

最終的には日と時間で表示したいです
たとえば173日と10時間55秒のような感じです

よろしくおねがいします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/03/23 21:29 編集

※回答に移行
guest

回答2

0

php

1$now = now(); 2$start = Carbon::createFromFormat('Y-m-d H:i:s', '2024-12-22 13:00:00'); 3$diff = $start->diff($now); 4dd(sprintf('スタートまで残り:%d年%d月%d日 %d時%d分%d秒', $diff->y, $diff->m, $diff->d, $diff->h, $diff->i, $diff->s));

投稿2020/03/24 02:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creative_09

2020/03/24 10:02

ありがとうございます!!
退会済みユーザー

退会済みユーザー

2020/03/24 10:05

理解できたかどうかのお返事の方がありがたいです。
creative_09

2020/03/24 10:28

まだ試せていないのですが、日数部分が165日など、そういったようになるのか疑問でした。 $diff->yの部分を削除しても消えるだけで日数的にはどうなのか。 試し次第、またコメント致します いつもありがとうございます! このほうがcarbon使ってます!って感じでいいですね
creative_09

2020/03/25 01:39

日数からの表示で176日のようにしたかったのですが、うなく出来なかったので $now = Carbon::now(); として $start->diff($now)->format('スタートまであと %a日 と %h時間 %i分') . "\n"; とすることで日数部分も解決することが出来ました Carbon::createFromFormatで書式を変えることはしないで解決したのですが うまく出来ないときのために覚えておきます ありがとうございます
creative_09

2020/03/25 01:56

%days日に置き換えるとうまくいきました。 まだもう少しいじってみます。 ありがとうございます
退会済みユーザー

退会済みユーザー

2020/03/25 02:33

$diff = $start->diff($now); dd($diff); これを確認すれば、メソッド名は想像つくとおもうけど。
creative_09

2020/03/25 02:58

そのとおりにやっておりました。 ありがとうございます
guest

0

ベストアンサー

結局は日付を扱うのでユニックスタイムからの経過日付になりますので表示としては正しいです。
例示されている173日というのは月の日数の概念にはないので、
自前で割っていって算出するしかないのではないでしょうか。
「早見表」すぐわかる1分~100年まで何秒なのか一覧表

投稿2020/03/23 21:29

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creative_09

2020/03/24 00:23

なるほど ありがとうございます。 carbonでせずに、素直に $start->diff($now)->format('まであと %a日 と %h時間 %i分') . "\n"; などとします そうすれば日数の部分もクリアできそうなので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問