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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

5373閲覧

phpのDateTime::diffで総分数を出したい

nasubi256

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2017/05/15 08:54

編集2017/05/15 09:34

phpのDateTimeで分差を出したいのですが、調べてみる限り用意されていないようなのです。
http://jp2.php.net/manual/ja/dateinterval.format.php

例えば2時間の差があった場合、120と表示したいです。

この質問ではtimestampの差分を見る方法がベストアンサーになっているのですが
https://teratail.com/questions/12116

timestampの差分をみる方法のほかに、良い方法はないものでしょうか。。。?

php

1$datetime1 = new DateTime('2010-01-01 10:00'); 2$datetime2 = new DateTime('2010-02-01 11:00'); 3$interval = $datetime1->diff($datetime2); 4 5// %a で総日数が出せる 6echo $interval->format('%a total days')."\n"; // 31 total days 7 8// では総分数は?以下だと0になってしまう。 9echo $interval->format('%i')."\n"; // 0 ← 1:00:00の0
KiyoshiMotoki👍を押しています

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

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

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

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

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

nasubi256

2017/05/15 09:34

>1時間以上の差分も"分"として取得したい、と言うことですね。 はい、そうです。わかりにくかったようでしたので、編集いたしました。
guest

回答2

0

UNIX時間 - Wikipedia
Unixタイムスタンプを使って互いに秒にしたあと差分を取り、それを60秒で割れば分が求まります。

https://3v4l.org/Ylj6L

php

1<?php 2 3$datetime1 = new DateTime('2010-01-01 10:00'); 4$datetime2 = new DateTime('2010-02-01 11:00'); 5$interval = $datetime2->getTimestamp() - $datetime1->getTimestamp(); 6 7echo $interval / 60;

結果
実行結果


どうしてもDateTime::diff()を使いたいのであれば、

https://3v4l.org/jRTld

php

1<?php 2 3$datetime1 = new DateTime('2010-01-01 10:00'); 4$datetime2 = new DateTime('2010-02-01 11:00'); 5$interval = $datetime1->diff($datetime2); 6 7// %a で総日数が出せる 8echo $interval->days * 24 * 60 + $interval->h * 60 + $interval->i;

結果
実行結果2

DateTimeクラスを継承して分の差分を出せるメソッドを追加したものを作れば、
利便性は上がりそうです。

投稿2017/05/15 09:37

編集2017/05/15 09:46
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nasubi256

2017/05/15 10:04

m6uさんの回答も勉強になりました。ありがとうございました。
guest

0

ベストアンサー

ライブラリを使用出来るのなら、Carbonがあります。
diffInMinutesを使うと分で取れるかと思います。

投稿2017/05/15 09:06

yoorwm

総合スコア1305

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

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

nasubi256

2017/05/15 10:03

Carbonで解決いたしました。今まで使わなかったことを悔やむくらい便利です。 ありがとうございます。 use Carbon\Carbon; class ... { function (){ $start_datetime = new Carbon('2017-01-01 10:00'); $end_datetime = new Carbon('2017-01-01 11:00'); ehco $start_datetime->diffInMinutes($end_datetime) } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問