• ベストアンサー

VB.NETでの時間計算

いつもお世話になっております。 VB.NETに関しての初歩的な質問です。 TextBox1.Text「0900」 TextBox2.Text「1030」 などと4桁の文字列を入力して、時間を計算したいのです。 早い話、ある作業にどれくらいの時間を費やしたかを計算したいのです。 各項目毎に計算して、それぞれの集計もしたいと思っています。 上記のやり方だと何となくうまくいかないような気がするのですが、 一般的に利用されている方法があれば教えて頂きたいと思います。 初歩的な質問で大変恐縮ですが、 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

VB.NETは面倒ですね。日付変換して引き算で仕舞いのエクセルVBAなどが懐かしい。 Form1に2コマンドボタンを貼り付ける。 テキストボックスを2つ貼り付ける。(時刻From toを入れる)。 コマンドボタン2の実行時には、9時は09 、3分は必03と入れるものとする。 コマンドボタン1は http://www.atmarkit.co.jp/fdotnet/dotnettips/267timespan/timespan.html の実行の練習(固定時刻で計算例)。 コマンドボタン2はそれをテキストボックス2つで置き換えた例を実行するボタンです。 ちっとした部分でつまずくかもしれないので、下記はすべてをコピーしてあります。 Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show("AAA") keisan1() End Sub Shared Sub keisan1() MessageBox.Show("BBB") Dim start1, end1, start2, end2 As DateTime start1 = DateTime.Parse("2005/02/24 08:10") end1 = DateTime.Parse("2005/02/24 20:30") start2 = DateTime.Parse("2005/02/25 08:40") end2 = DateTime.Parse("2005/02/25 22:55") Dim total, duration1, duration2 As TimeSpan duration1 = end1.Subtract(start1) duration2 = end2.Subtract(start2) total = duration1.Add(duration2) MessageBox.Show("合計=" & Int(total.TotalHours) & "時間" & duration1.Minutes & "分") ' 出力:合計=26時間20分 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim start1, end1, start2, end2 As DateTime MessageBox.Show(TextBox1.Text) MessageBox.Show(TextBox2.Text) start1 = DateTime.Parse("2005/02/24 " & TextBox1.Text.Substring(0, 2) & ":" & TextBox1.Text.Substring(2, 2)) MessageBox.Show(start1) end1 = DateTime.Parse("2005/02/24 " & TextBox2.Text.Substring(0, 2) & ":" & TextBox2.Text.Substring(2, 2)) MessageBox.Show(end1) Dim total, duration1, duration2 As TimeSpan duration1 = end1.Subtract(start1) Dim ts As New TimeSpan(end1.Subtract(start1).Ticks)    MessageBox.Show("時間差=" & ts.ToString) Console.WriteLine(ts) End Sub End Class MessageBox.Show( はすべて勉強用です。 これがベターかどうか判りませんが。VB.NET 時間計算で照会すること。

rh490820
質問者

お礼

詳細なありがとうございます。 とても勉強になりました。 単純に足し算引き算ってわけではないのですね・・・