VBの時間残計算プログラムに困っています

このQ&Aのポイント
  • コンボボックスから指定した年月日と時刻と現在時刻の差を計算するVBのプログラムで困っています。
  • プログラムの最後のRestTimeが数値にならずに困っています。
  • どなたかこの問題の解決策をご存知の方いらっしゃいますか?
回答を見る
  • ベストアンサー

VBの時間残計算プログラム

こんにちはtmgmです。 VBの時間計算プログラム作成で困っています。 コンボボックスから年月日と時間と分を別々に計5つ指定して、現在時刻との差を出すとというプログラムです。 具体的にはこういうことです。 1.年(cboYear)、月(cboMonth)、日(cboDay)、時(cboHour)、分(cboMinute)をそれぞれリストから指定します。 2.現在の時刻との差をRestTimeに格納し、lblResult.Captionに代入します。(日付や年度をまたぐ場合の時間差も考慮します。) 困っていることというのは、最後のRestTimeがどうしても数値になってしまうということです。時間などは1899年12月30日を0としてそれぞれの日付が値を持っているというのは本に書いてありましたが、それをどうプログラムに反映していいものか、わかりません。 上記のようなプログラム、どなたかお分かりの方いらっしゃいますでしょうか? ご返答よろしくお願いします。

  • tmgm
  • お礼率17% (47/273)

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

  • ベストアンサー
  • soma3
  • ベストアンサー率39% (16/41)
回答No.2

時間間隔を計算する場合、 #1さんの言われるようにDateDiff関数を使うと良いと思います。 使い方としましては、分単位の間隔の場合 以下のように一番目の引数が「n」になります。 DateDiff("n", "2003/10/11 09:30", "2003/10/11 10:30") 上のような場合は「60」ですね。 また、○時間○分のように分けたい場合は、 DateDiff("h", "2003/10/11 09:00", "2003/10/11 10:59") のように1番目の引数を「h」にすることで、 時間間隔を別途取ったりして計算する必要があるかもしれません。 上記の例でいくと1時間59分の時間差なのですが、 試しに動かしてみると「1」が返ってきました。 このようにDateDiff関数は切捨てで値が返ってきてると思われます。(確実ではありません。ごめんなさい。) 以上のように何回かの処理に分けることで、 何日何時間何分のような表示も可能になります。 ただ、もっとスマートなやり方もあるかもしれませんので、 参考までにお願いします。 関数に関しましてはMSDNのオンラインヘルプを参照ください。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctdatediff.asp

その他の回答 (1)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

DateDiff関数ではだめでしょうか? 参考URLを参照してみてください。

参考URL:
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k08.htm

関連するQ&A

  • VB2008で日付と時間の計算

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

  • Timerコントロールによる動作の時間間隔設定について

    よろしくお願いします! ある常駐プログラムを作成し、操作者があらかじめ指定した時間ごとに 画像を保存するという設定にしています。 Timerコントロールで直接時間間隔を指定するとIntervalが最大60000くらい らしいので、まずLabel1にInterval1000で時計を表示して、次にLabel2に もLabel2.caption=timeで時刻を表示します。 操作者が仮に2分ごとに画像を取ると指定した場合は、 Label2の時刻にDateAddで("s",120,TimeValue(label2.caption))した時刻と Label1の時刻が同じになったら画像を取るというコードにしてます。 で、画像を取ると同時にLabel2.caption=timeでLabel2の値を現在時刻に し、また繰り返し2分足したものとLabel1.captionが同じになるのを 待って画像を取ります。 これを繰り返して指定した時間間隔で画像を取るようにしていまして、 ちゃんと動作するのですが、なぜか時計が23:59:57くらいで Label2の方の表示が止まってしまうのです。 Label1の方はTimerで1秒ごとにちゃんと時計を表示し続けている のですが、Label2だけ0時直前で必ず止まってしまいます。 何か日付が変わると表示ができなくなるような決まりがあるのでしょうか。 色々と試したのですが、ここだけが分かりません。 ご教授お願いいたします! また、私のやり方以外に何か時間間隔を指定する良いコードが ございましたら教えていただけますでしょうか? 例えばTimerコントロールを1分ごとに起動して、3分なら3回カウント させるような方法もどこかで目にしたのですが、操作者が指定する 時間間隔は秒単位にしているので、3秒であったり、120秒(2分)で あったり様々です。 その場合の方法がよく分からないので、最初に書いた方法でコードを 書いています。 よろしくお願いします!!!

  • 日時や時刻を指定し、その時間にメッセージを表示させる方法、、、

    Visual Basic 6.0 を始めたばかりの者です。 「日時や時刻を指定し、その時間になったら  あらかじめ指定したメッセージを表示させる」 というプログラムを作ろうとしています。 自分なりに考えたのは次のような方法です。 1.Year、Month、Day、Hour、Minute関数で、今日の年月日と時刻を得て  変数に入れる。 2.コンボボックスに「2003」などの数値を入れておき、  メッセージを表示させたい年月日と時刻を選択させる。  指定された年、月、日、時間、分はそれぞれ変数に入れる 4.「設定」ボタンを押す。 3.IF関数を使い、1.と2.の変数が全部一致したら、  メッセージボックスなどを出してメッセージを表示。 If (指定したYear = 今日のYear) And _ (指定したMonth = 今日のMonth) And _ (指定したDay = 今日のDay) And _ (指定したHour = 今日のHour) And _ (指定したMinute = 今日のMinute) Then テキストボックス = "定められたメッセージを表示する" End If ここで行き詰まってしまいました。 タイマーコントロールを使うのかな?とは思うのですが、 どのようにして使えば良いのか判りません。。。 1.の段階で既に間違っているのでしょうか。 タイマーコントロールを使って、今日ではなく「今現時点の」 年月日と時刻を得る必要があるのでしょうか、、、? 恐らく簡単な事なのかも知れませんが、判りやすく教えて戴けると幸いです。 宜しくお願い致します。

  • 時間計算機

    お世話になります。 現在の日付、時刻を入力。48時間30分後を入力。 計算結果を「〇日の○○時」と計算をしてくれるサイトはないでしょうか。 アンドロイドアプリでも結構です。 ゲームの待ち時間計算に使いたいのです。

  • 何時間後を求める。

    お世話になります。 perlで時刻を表示していますが、 この度2時間後を求める必要が発生しました。 例えば、 08年2月29日23時15分なら 08年3月1日1時15分というようにです。 このような「指定日時の何時間後を求める」ような関数は 存在するのでしょうか。 無いようで在れば、コードを教えていただけませんでしょうか。 ちなみに、データ保有は以下のとおりです。 日付;$yyyymmdd (例20080229) 時刻;$hhmm (例2315) 以上、宜しくお願いします。

    • ベストアンサー
    • Perl
  • 2つの時刻間の時間を計算したい。

    よろしくお願いします。 エクセル2010、OSはWindows7です。 例) セルA1 に時刻その1 セルB1 に時刻その2 というデータが入力されています。 時刻は、YYYY/MM/DD hh:mm の形式で入力されており、2つの時刻の差は24時間以上なので日付は異なります。 この2つのセルの時間差をhh:mmの形式で表したいですが、単純に引き算しただけでは思うようにいかないようです。 やり方を教えてください。

  • VB.net2010 曜日の取得について

    初心者ですが、失礼します。 VB.net2010にて コンボボックス4つ (「20」「00」年「04」月「02」日の「」の4つ) に任意の日付を入れてその日の曜日を分かるようなコードを組みたいのですが、 weekdayname関数とコンボボックスの合わせ方がイマイチ分かりません。 宜しくお願い致します。 1. コンボボックス4つの年月日を選択してボタンを押す 2.メッセージボックスに曜日を表示する

  • エクセルで時間差を計算する方法

    セルで区切られた年月日、時間から時間差を計算する方法 例 2018年4月1日日曜日15時30分から2018年4月3日火曜日12時15分までの経過  時間を求める方法   表を添付しますのでよろしくお願いします。

  • エクセルでの時間差算出の方法を教えてください。

    OSはWINDOWS7 エクセルはExcel2010です。 下記のような形式でセルに入力された年月日、時刻があります。 A1  2013年05月10日 09:30:00 A2  2013年05月10日 11:50:30 これらの二つの時刻の時間差を ●日間●時間●分、 という形式で算出してくれる関数を教えてください。 上記の場合ですと A2-A1 = 0日間2時間20分30秒 という答えが得られれば結構です。(表記は 2:20 30でもよい) よろしくお願いします。

  • 時間の比較

    はじめまして。Java初心者です。 Javaの時間(分)比較にて困っています。 ある対象の日付を現在時刻から10分経過しているかチェックする プログラムを作成しようとしています。 対象日付A:20070217 100000 現在時刻B:20070217 100500 C= B.getTime()-A.getTime() まではかけているのですが、Cの結果を分に変換しようとして うまくできません。 申し訳ないですが、ご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Java