
No.2ベストアンサー
- 回答日時:
.net framework 上で "時間" は TimeSpan 型を使う。
DateTime 型どうしの計算をすると、結果は自動的に TimeSpan 型で返ってくる。
(1) 2つの時刻の差
DateTime が "xx時xx分" という値を認識するとは思ってもいなかった。
Dim dt1 As DateTime = DateTime.Parse("08時28分")
Dim dt2 As DateTime = DateTime.Parse("17時04分")
Dim result As TimeSpan = dt2 - dt1
Label2.Text = String.Format("{0}時間{1}分", Math.Floor(result.TotalHours), result.Minutes)
(2) 3つの時間の合計
3つの "時間" とあったので、最初から TimeSpan を使っているが、DateTime であっても問題ないかもしれない。
合計の "時" は TimeSpan 型の Hour で取れるが、24時間を越える場合も "時" の部分しか取れないので TotalHours プロパティを使った。
TotalHours は分秒の値も少数で持っているので切り捨てている。
Dim span1 As TimeSpan = TimeSpan.Parse("8:36:0")
Dim span2 As TimeSpan = TimeSpan.Parse("6:8:0")
Dim span3 As TimeSpan = TimeSpan.Parse("9:54:0")
Dim result As TimeSpan = span1 + span2 + span3
Label4.Text = String.Format("{0}時間{1}分", Math.Floor(result.TotalHours), result.Minutes)
(3) 時間の平均
平均を算出する部分は関数にでもしておけばよいと思う。
今回はサンプル数が 3つなのでベタに書いている。
時間の合計から TotalMinutes で分に直した値で平均値を出して、それを FromMinutes で TimeSpan 型に戻している。
Dim span1 As TimeSpan = TimeSpan.Parse("8:36:0")
Dim span2 As TimeSpan = TimeSpan.Parse("6:8:0")
Dim span3 As TimeSpan = TimeSpan.Parse("9:54:0")
Dim totalValue As Double = span1.TotalMinutes + span2.TotalMinutes + span3.TotalMinutes
Dim averageMinutes As Double = Math.Floor(totalValue / 3)
Dim result As TimeSpan = TimeSpan.FromMinutes(Math.Floor(averageMinutes))
Label6.Text = String.Format("{0}時間{1}分", Math.Floor(result.TotalHours), result.Minutes)
早速の回答をありがとうございました。
この部分に来るまでに時間がかかり、お礼が遅くなりました。申し訳ありませんでした。
回答いただいた通りにしたところ、上手く行きました!!!ありがとうございました!
また何かありましたら、その節もよろしくお願いします。
No.1
- 回答日時:
こんにちは
1番目はどのような方法でもさほど変わりがありませんね。
2番目と3番目は時間と分だけですので、全部分に変換してから、計算後再度時間と分に変換する方法と時間の部分と分の部分を別別に計算する方法がありますが、なんとなく一度分に変換してから計算して再度時間と分に変換した方がスッキリするみたいです。
Public Class Form1
Private Sub f() Handles MyBase.Shown
Dim dt1 As DateTime = DateTime.Parse("17:04:00")
Dim dt2 As DateTime = DateTime.Parse("08:28:00")
Dim dt3 As TimeSpan = dt1 - dt2
Label1.Text = dt3.Hours.ToString & "時間" & dt3.Minutes.ToString & "分です。"
'「時」と「分」を個別に計算
Dim dt4 As DateTime = DateTime.Parse("08:36:00")
Dim dt5 As DateTime = DateTime.Parse("06:06:00")
Dim dt6 As DateTime = DateTime.Parse("09:54:00")
Dim dth As Integer = dt4.Hour + dt5.Hour + dt6.Hour '時間の合計
Dim dtm As Decimal = dt4.Minute + dt5.Minute + dt6.Minute '分の合計
Dim dt8 As Decimal = Math.Floor(dtm / 60) '分の繰り上げ
Dim dt9 As Integer = dtm Mod 60 '分の繰り上げの余り
Label2.Text = "合計は " & (dth + dt8).ToString & "時間" & dt9.ToString & "分です。"
'全部一度分に変換して計算後再度「時」と「分」に変換
Dim dt10 As Decimal = dth * 60 + dtm '時間の合計を分に変換 分の部分も足す
Dim dt11 As Decimal = Math.Floor((dt10 / 60) / 3) '分の合計を時間に変換
Dim dt12 As Decimal = (dt10 Mod 60) / 3 '分の合計を時間に変換したときの余り
Label3.Text = "平均は " & dt11.ToString & "時間" & dt12.ToString & "分です。"
End Sub
End Class
早速の回答をありがとうございました。
この部分に来るまでに時間がかかり、お礼が遅くなりました。申し訳ありませんでした。
非常に参考になりました。
また何かありましたら、その節もよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
- その他(Microsoft Office) 時間の平均値を計算する方法を教えて。 1 2023/08/06 12:02
- 数学 平均の速さの求め方について質問させて頂きます。 12 2023/08/09 17:13
- Excel(エクセル) Excel 時間の引き算でマイナスを表示させることは出来ますか 3 2023/06/14 21:54
- スマートフォン・携帯電話 時間の感覚 日時の計算 2 2022/07/07 17:47
- 物理学 二つの光時計 2 2022/06/02 16:32
- Excel(エクセル) エクセルで勤務時間の計算をしています。 下記図でstartは勤務開始時間、endは勤務終了時間です。 5 2022/06/07 13:51
- Excel(エクセル) エクセルで休憩時間を引く時と、引かない時の数式 3 2022/11/05 11:48
- アルバイト・パート パートで1時間当たりの時給が違う場合に自動で給料計算する方法はありませんか? 6 2023/08/28 13:46
- その他(Microsoft Office) Excel 勤務時間の計算について~(残業)有.無しの場合。 4 2022/07/17 21:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像を二次元フーリエ変換
-
階乗の逆数を計算するFunction...
-
Accessのクエリの値を変換(代入...
-
意味不明の実行時エラーで困っ...
-
印刷ダイアログを表示させたくない
-
VBAでOutlookを終了させたい Ex...
-
印刷ダイアログを表示させない方法
-
Process.Startで起動したアプリ...
-
インストール不要アプリケーシ...
-
URLを指定して直接印刷って出来...
-
vba 時間の引き算 例えば 15:00...
-
CreateFile が ERROR_PATH_NOT_...
-
遺伝的アルゴリズムについて教...
-
「読み込み違反」が起きたとき...
-
C#ソースをCSCファイルにてコン...
-
OWCを使用しブラウザにグラフを...
-
クリスタルレポートをASPで
-
Designer.vbは直接コードをいじ...
-
VB2010で作成したdllからtlbが...
-
プリンターを指定して印刷するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリの値を変換(代入...
-
経過日数を調べたい
-
画像を二次元フーリエ変換
-
秒数を入力すると○時間○分○秒と...
-
DateDiff関数の怪!?
-
c言語またはVBのSin Cos Tan
-
カラーコード 濃くしたい
-
VB2013での時間帯判定で困って...
-
VB2010で、時刻と時間の計算に...
-
電卓の作成 VB
-
UTF_16からUTF_8への変換で困っ...
-
日付の計算について
-
離散コサイン変換(DCT)について
-
C言語プログラムの質問です。 ...
-
C言語のプログラム
-
4桁の整数の前位の足し算を行い...
-
世界測地系から東京測地系へ変換
-
階乗の逆数を計算するFunction...
-
FORTRANの課題
-
ウェーブレット変換に関して
おすすめ情報