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

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

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

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

Q&A

2回答

166閲覧

時刻の計算 分の部分が計算できない

dj29man

総合スコア6

PHP

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

0グッド

0クリップ

投稿2018/01/06 13:50

###前提・実現したいこと
PHP初心者です。
〇時〇分-〇時〇分-〇時〇分 の計算を行いたいです。

【例】
17時45分 ₋ 1時0分 ₋ 9時30分

という式で、7時15分 と返したいです。

###発生している問題・エラーメッセージ

$time["end"] - $time["rest"] - $time["start"]
各変数には「〇時〇分」という型で値が入っています。
上記の内容で計算をすると、
〇分 の部分がうまく計算されません。

【例】
17時45分 ₋ 1時0分 ₋ 9時30分

↑〇時の部分は計算されるが〇分の部分は計算できず、
「7時」と返ってしまう。
分の部分も計算させるにはどうすればよいでしょうか。

###該当のソースコード

$time["end"] - $time["rest"] - $time["start"]

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

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

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

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

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

guest

回答2

0

日常では時刻と時間は同じ意味使われていることが多いと思いますが、両者は明確に別のものです。
17 時 45 分という「時刻」から 1 時 0 分という「時刻」を引いた場合、16 時間 45 分という「時間」が求められます。
時間から 9 時 30 分という「時刻」を引くことはできません。

この計算をするためには三つの値が「時刻」でなく「時間」であれば問題ありません。

ご承知のように 1 時間は 60 分間なので、時間に 60 をかけたものと分間を足せば分間に直すことができます。
つまり 17 時間 45 分 - 1 時間 0 分 - 9 時間 30 分 = (17 * 60 + 45) - (1 * 60) - (9 * 60 + 30) = 435 分間となります。

435 を 60 で割ると 7...15 となりますので、答えは 7 時間 15 分です。

投稿2018/01/06 15:06

Zuishin

総合スコア28660

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

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

0

phpには単なる時間の引き算はないはずなので、一度Unixタイムスタンプの形に変換してあげてから、計算する必要があります。

php

1<?php 2$time["end"] = '17時45分'; 3$time["rest"] = '1時0分'; 4$time["start"] = '9時30分'; 5 6function conv_strtotime($time){ 7 $time_Gi = preg_replace(array('/時/','/分/'),array(':',''),$time); 8 return strtotime($time_Gi); 9} 10 11$time["result"] = conv_strtotime($time["end"]) - conv_strtotime($time["rest"]) - conv_strtotime($time["start"]); 12 13echo(date('G時i分',$time["result"])); 14 15?>

投稿2018/01/06 14:45

oskbt

総合スコア1895

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

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

gallu

2018/01/07 14:00

すみません些か蛇足なコメントで恐縮ですが。 上述のコードですと、preg_replaceの所は、str_replaceでも賄えるか、と思いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問