🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

Q&A

解決済

3回答

811閲覧

PHPの時間計算 「xx:xx - xx:xx」

Hoshito823

総合スコア10

PHP

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

0グッド

2クリップ

投稿2019/10/12 01:45

前提・実現したいこと

PHPで 5:00 - 8:00 = 21:00 のような時間計算を実現したいです。
単純な計算では実現できないことはわかるのですが、どう実現したらいいか分かりません。

$input_time = "5:00"; $minus_time = "8:00"; $result_time = $input_time - $minus_time ; echo $result_time;

初歩的な質問で恐縮ですが、どうぞよろしくお願いいたします。

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

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

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

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

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

kyoya0819

2019/10/12 01:47

8:00から翌日5:00までの時間を調べたいということでよろしいでしょうか?
takasima20

2019/10/12 01:54

5:00 の 8時間前は何時か? ってことかな。日付の扱いはどうするんだろう。
guest

回答3

0

こういうことですかなー。

php

1function diff_time($t1, $t2) { 2 $d1 = new DateTime($t1); 3 $d2 = new DateTime($t2); 4 $diff = ($d1 > $d2 ? $d1->diff($d2) : $d1->modify('+1 day')->diff($d2)); 5 return $diff->format('%H:%I'); 6} 7 8echo diff_time('5:12', '8:21') . "\n"; // => 20:51 9echo diff_time('8:21', '5:12') . "\n"; // => 03:09 10

投稿2019/10/12 02:24

編集2019/10/12 02:27
tanishi_a

総合スコア484

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

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

tanishi_a

2019/10/12 02:26

しまった。もう回答 出てた
guest

0

PHP: Date/Time - Manual

$input_time$minus_timeが日付なしの時刻 時と分成分のみ、って前提でとりあえず動作したので貼っとく。

php

1<?php 2 3$input_time = "5:00"; 4$minus_time = "8:00"; 5 6$dt = DateTime::createFromFormat('H:i', $input_time); 7$minus_time = 'PT' . str_replace(':', 'H', $minus_time) . 'M'; 8$interval = new DateInterval($minus_time); 9$dt->sub($interval); 10 11$result_time = $dt->format('H:i'); 12echo $result_time;

結果

投稿2019/10/12 02:16

編集2019/10/12 02:19
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

PHP

1<?php 2//差を求める日時 3$dateTime1 = '2019-06-19 12:50:30'; 4$dateTime2 = '2019-12-21 23:56:12'; 5 6 //時分秒の差を返す関数 7function time_diff($d1, $d2){ 8 9 //初期化 10 $diffTime = array(); 11 12 //タイムスタンプ 13 $timeStamp1 = strtotime($d1); 14 $timeStamp2 = strtotime($d2); 15 16 //タイムスタンプの差を計算 17 $difSeconds = $timeStamp2 - $timeStamp1; 18 19 //秒の差を取得 20 $diffTime['seconds'] = $difSeconds % 60; 21 22 //分の差を取得 23 $difMinutes = ($difSeconds - ($difSeconds % 60)) / 60; 24 $diffTime['minutes'] = $difMinutes % 60; 25 26 //時の差を取得 27 $difHours = ($difMinutes - ($difMinutes % 60)) / 60; 28 $diffTime['hours'] = $difHours; 29 30 //結果を返す 31 return $diffTime; 32} 33//初期化 34$diffTimeOutPut = array(); 35 36//関数実行 37$diffTimeOutPut = time_diff($dateTime1, $dateTime2); 38 39//日時の差を表示 40echo $diffTimeOutPut['hours'].'時間<br/>'; 41echo $diffTimeOutPut['minutes'].'分<br/>'; 42echo $diffTimeOutPut['seconds'].'秒<br/>'; 43?>

引用元

これじゃダメなんですか?

投稿2019/10/12 01:50

編集2019/10/12 01:51
kyoya0819

総合スコア10429

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問