• ベストアンサー

VB.NETでの時間計算

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB.NETでのTimeSpanでの時間集計

    いつもお世話になっております。 開発SEじゃないのに開発をしている社内SEです。 現在、VB.NETを利用しています。 TimeSpanを使って時間の集計をしたく思います。 各作業ごとの時間を計算して、その後、総労働時間を集計したいのです。 例: TotalTime1.Add(TotalTime2) TotalTime1.Add(TotalTime3) TotalTime1.Add(TotalTime4) TotalTime = TotalTime1 Lbl_TotalTime.Text = TotalTime.ToString() こういう書き方は出来ないのですか? 「Add」だから、どんどん集計されるかと思ったのですが・・・ 本当に初歩的な質問になるのだと思いますが、 ネットで調べてもヒットしないのです。 また、そもそも別に一般的な方法があれば教えて頂きたく思います。 よろしくお願い致します。

  • VB6での時間計算について

    VB6での時間計算について VB6で時間計算のプログラムを作成しています。 しかし、行き詰ってしまいました。 どなたかご教授願います。 3時50分から10時20分は何時間分経っているかという計算式で悩んでいます。 時間を打ち込み用にテキストボックスを4つ作ってまして、一つ目に「3」、二つ目に「50」、三つ目に「10」、四つ目に「20」という風に打ち込みコマンドボタンを押すと6.5時間と算出されテキストボックスかラベルに表示されるといったことをするにはどうしたらいいのでしょうか?

  • VB2008で日付と時間の計算

    教えて下さい。 VBで日付と時間の足し算をしたいのですがやり方がわかりません。 フォームに6つのテキストボックスを配置し、6つのテキストボックスには それぞれ日・時・分の数値を入力します。 例えばヤフーオークションの終了時刻を計算したい場合、 TextBox1~3に現在の日時を入力し、TextBox4~6に残り時間を入力します。 現在時刻 [4] 日 [17] 時 [44] 分 残り時間 [3] 日 [6] 時間 [30] 分 この数値の足し算結果をメッセージボックスに終了時刻として表示させるようにしたいのですが、やり方が分からず困ってます。 教えていただけないでしょうか。

  • 文字列の数字を計算したい

    初歩的な質問で申し訳ありませんが お願いします。 VB2005EXPRESSで、 文字列の『1』を整数の『1』に、 文字列の『245』を整数の『245』に 変換する関数を教えていただけますか? TextBox2.Text = (TextBox2.Text) + (TextBox1.Text) 1+1が11になります! 一応、ヘルプで調べ 『strtol 文字列を長整数型 (long) に変換します。』 とあったので、 TextBox2.Text = strtol(TextBox2.Text) + strtol(TextBox1.Text) としたら、 名前strtolが宣言されていません。というエラーが出ました。

  • VBA入力フォームで労働時間の計算をしたい

    VBAで入力フォームを作りました。  1)開始時間(textbox1)・終了時間(textbox2)・休憩時間(textbox3)・従事人数(textbox4) の入力を行うと自動的に延べ労働時間(textbox5)計算し表示をしたいです。  【例:13:00(開始) 14:00(終了) 0:15(休憩15分) 5(従事人数) =3:45(textbox5)】  例の3:45という答えがでる計算式を教えていただけないでしょうか? また、上記の同項目が10個あり、延べ労働時間の合計を表示するところも作りました。(textbox6)  2)時間記入時13:00と入力が面倒なので『1300』というように『:』を省略したいです。    なお答えの欄は『:』の表記したいです。  3)また、計算終了後、表記入のボタンを押すと指定したセルに(textbox6)の答えが表示できるよう作成したいです。    0からの質問で恐縮ですが1)~3)の質問お願いについてご回答よろしくお願いいたします。

  • エクセルの時間計算について

    エクセルで時間の計算をしたいのですが、うまくできず困っています。 A列には 1315、747、など3~4桁の数値が、B列にも 1532、916など同じく3~4桁の数値が入っています。これはそれぞれ 13:15、7:47、15:32、9:16のように時刻を表しており、A列は活動開始時刻、B列は活動終了時刻となっています。 C列には「TEXT(A2,"0!:00")-TEXT(B2,"0!:00")」という数式を入力し、実質活動時間を計算しています。 このようなデータが約9000行あります。C列の活動時間を合計して、時間数を出したいのですが、どのような計算式を用いればよいでしょうか?SUMでは出ないようですので・・・ ややこしいですが、お知恵をお貸し下さい。よろしくお願いします。

  • VB2010 TextBoxの文字列に正しく入力されないのは何故ですか

    VB2010 TextBoxの文字列に正しく入力されないのは何故ですか? string型の変数に文字列を入れ、TextBox.Textに代入すると文字列の後ろが切れてしまう。 Dim st As String st="s01114DG000555<0?e09" TextBox.Text = st この場合、TextBox.Textには"s01114DG000555<0"となり、後ろの4文字が切れてしまっている。 ちなみに、 TextBox.Text = "s01114DG000555<0?e09" とすると、正常に全文字数が入る。 半角文字列の塊なのに、どうしてこのようなことが起きるのでしょうか? また、これの対応策は何ですか? 以上、よろしくお願いします。

  • VBで時間計算の方法

    VB6で時間計算のソフトを作っているのですが、"08:20"を"0820"、"17:10"を"1710"と入力して、"1710"から"0820"の差を分単位"480"で表示したいのですが、どうしたらいいですか? また、時間の平均計算の方法はどうしたらいいですか?

  • VB2005でで正しい計算結果が出ません。

    VB2005でで正しい計算結果が出ません。 こんにちわ。プログラミング初心者です。どうかよろしくお願いします。 緯度経度を変換する計算式をプログラムしたのですが、計算結果が間違って出力されます。 下にプログラムを書くのでどこがおかしいのか、またどうすれば正しい計算結果が求められるのかを教えてください。お願いします。 ちなみにTextBox22には 3601.4589 、 TextBox23には 13942.9930 のような数字が入っています。 Private Sub seriWork() Dim buffer, buffer2() As String Dim di1, di2, dk1, dk2 As Double '~通信に関するところなので中略します~ '~ここから先が計算です~ 'Dの緯度百分率変換表示 TextBox22.Text = dN di1 = Double.Parse(Mid(TextBox22.Text, 1, 2)) di2 = Double.Parse(Mid(TextBox22.Text, 3, 7)) TextBox14.Text = di1 + (di2 / 60).ToString() 'Dの経度百分率変換表示 TextBox23.Text = dE dk1 = Double.Parse(Mid(TextBox23.Text, 1, 3)) dk2 = Double.Parse(Mid(TextBox23.Text, 4, 7)) TextBox15.Text = dk1 + (dk2 / 60).ToString() Me.Invoke(New ReDelgate(AddressOf completed)) End If Loop Catch ex As Exception MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally If SerialPort1.IsOpen = True Then SerialPort1.Close() End Try End If この計算の意図は、GPSレシーバーから受信される「3601.4589」のような形の座標形式を googl mapで表示できる座標に変換するものです。 たとえば、シリアルポートでGPSから受信した緯度が3601.4589 の場合は、「=36 + (1.4589 / 60)」と計算すると 36.024315 のような形になります。 あと、3601.4589 を 36と1.4589で分割するためにMidを使用しています。 /60は公式です。 上記プログラムだと 62.3333333 のような誤解答が出てきます。 どうか教えてください。お願いします。

  • テキストボックス内の簡単な計算

    はじめまして、よろしくお願いいたします。 エクセル(2003)のマクロで質問です。 いくつか複数のテキストボックスが配置されています。 加算など簡単な計算をテキストボックス内で計算させていおいて、 最終的にボタンで、それら各々のテキストボックスに対応させた エクセルのシートのセルに代入させようとしています。 さて、テキストボックス内で簡単な計算をさせるため、 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1.Text = Evaluate(TextBox1.Text) End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox2.Text = Evaluate(TextBox2.Text) End Sub Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox3.Text = Evaluate(TextBox3.Text) End Sub … とさせましたが、 何も入力がないテキストボックスは そのままなにもしなくていいよ、とさせたいですのですが、 上記のままだと、何もない(値が入力されていない) テキストボックスに到達すると 止まります。 何も入力がないテキストボックスは 何もしなくていいよ、は どうしたらよいでしょうか? 誠に不勉強で恐縮ですが ご教授願います。