時間間隔の計算方法

このQ&Aのポイント
  • VB.NET2005で開発をしています。アプリ起動後、指定時間から分間隔で処理を行いたいです。
  • 現在時刻を取得し、指定した時間間隔を加えることで次回の処理時間を求めることができます。
  • 具体的なコード例を提供しています。時間の指定方法についても解説しています。
回答を見る
  • ベストアンサー

時間間隔の計算方法

時間間隔の計算方法 VB.NET2005で開発をしてます。 アプリ起動後、指定時間から分間隔で処理をしようと思います。 例)20分間隔 10時10分に起動すれば 10時20分に処理 10時40分に処理 11時00分に処理 ・ ・ ・ としたいのですが 10時10分に起動すれば 10時30分に処理 10時50分に処理 ・ ・ と起動した時間からしか時間間隔がとれません。 コード '現在時刻 Dim nowtime As DateTime = System.DateTime.Now '処理間隔時 exetime = 20 Label1.Text=nowtime.AddMinutes(exetime).ToShortTimeString '次回時間表示 System.DateTime.Now で現在時刻を取得してそれに20分をたしてます。 時間の指定方法を教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

'現在時刻 Dim nowtime As DateTime = System.DateTime.Now '処理間隔時 exetime = 20 ' 所得時間を20分ごとで正規化 Dim m as Integer = ( 20 * ( nowtime \ 20 + 1 ) mod 60 ) ' m=0の場合 1時間進める dim h as Integer = nowtime.hour + iif( m = 0, 1, 0 ) ' 新しい時間を設定 nowtime = new DateTime( nowtime.year, nowtime.month, nowtime.day, h, m, 0 ) 'Label1.Text=nowtime.AddMinutes(exetime).ToShortTimeString '次回時間表示 Label1.Text=nowtime..ToShortTimeString

その他の回答 (1)

回答No.1

http://ideone.com/E5WuX #JSTよりUTC(世界標準時)の方が好き

関連するQ&A

  • 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分)で あったり様々です。 その場合の方法がよく分からないので、最初に書いた方法でコードを 書いています。 よろしくお願いします!!!

  • 残り時間の計算

    VB2008 残り時間の計算方法について教えてください。 ユーザーフォーム上に 時刻Label(現在時刻表示) textbox1(締切時刻) textbox2(締切時刻までの残り時間) を配置させています。 ユーザーフォームを開いた時に textbox1に表示している締切時刻までの 残り時間をリアルタイムにtextbox2に表示 させたいのです。(分と秒) 時刻Label(現在時刻表示)の表示は13:00:00 textbox1(締切時刻)の表示例は18:00 残り時間は最大で240分です。 下記のようなコードを書いたのですがエラーになります Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim dtmData1 As DateTime Dim dtmData2 As DateTime Dim dtmData3 As DateTime 時刻Label.Text= TimeString dtmData1 = 時刻Label.Text dtmData2 = textbox1.Text dtmData3 = TimeValue(dtmData1) - (TimeString) textbox2.Text=dtmData3 End Sub よろしくお願いします。

  • VB.net(2005)でFormのLoadイベント処理について質問で

    VB.net(2005)でFormのLoadイベント処理について質問です 設定時刻として9:00とします。 formを起動した時刻が9時前ならまで何もせず。 9時以降になれば処理を開始する。 といったプログラムを作成しようと思います。 サンプル) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim settingtime As DateTime '現在時刻を設定 Dim nowtime As DateTime = System.DateTime.Now.ToShortTimeString '設定時間を9時 settingtime DateTime = DateTime.Parse("9:00").ToShortTimeString '現在時刻が9時より後のとき If nowtime < setting Then         処理A Else '現在時刻が9時より前のとき         9時まで処理Aをしない(9時になれば処理Aを開始) End If End Sub 上記のようにコーティングしましたが、 呼び出した時が9時以降なら処理Aをして以前ならElseの処理を行い抜けてしまいます。 9時になれば処理をAをしたいのです。 formを呼び出しにTimerのTickイベントで9時になれば処理Aを開始? なにかいい案があればよろしくお願いします。

  • VBAの時間計算

    エクセルのVBAで時間を比較して処理するために以下のプログラムを書いています。 しかしオーバーフローが出てうまくいきません。 お手数ですが解決方法を教えてください。 dim NowTime as Long h = Hour(Now) m = Minute(Now) s = Second(Now) NowTime = ((h*60)*60)+(M*60)+s 宜しくお願いいたします。

  • VB .netにて現在時刻+1時間後の時刻を取得したい

    VB .netにて現在時刻は DateTime.Now で取得できるのは確認しましたが、現在時刻+1時間後または現在時刻-1時間後のように取得した時刻からの指定経過時刻を取得したいのですが、方法がわかりません。 どなたかご存知の方、よろしくお願い致します。

  • VC++  System::Stringに変換するには?

    現在VisualC++ ExpressEditionを使って、C++の勉強をしながら万年カレンダーを作ろうとしていています。 ひとまずカレンダーの表示に使う月・日・曜日をDateTime::Nowから取り出したいのですが、 DateTime d1 = DateTime::Now.AddMonths; label1->Text = d1.ToShortTimeString; と試しにlabelに現在の月を表示させようとしたところ、 「1 番目の引数を 'System::String ^(__clrcall System::DateTime::* )(void)' から 'System::String ^' に変換できません。」 というエラーメッセージとともに弾かれてしまいます。 どこをどう変えればよいのか教えてください。 勉強を始めるのに買ってきた参考書では、DateTime::Now.ToLongTimeString;で日付から時刻まで繋げて表示する方法しか載っていませんでした(索引にもDateTime::Nowのみ) PCで検索しようとしても別の言語や参考書のHPが大量に引っかかって困っています。

  • 時間帯判定をする。

    質問です。 開始時刻 09:00:00 終了時刻 22:00:00 という前提で、 現在時刻を String nowtime = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(now); //hh:mm:ssという形式で取得し、 現在時刻が9:00:00から22:00:00 までならば、有効時間帯で、それ以外は、無効としようとしています。 if(9:00:00~22:00:00){  System.out.println("有効時間帯");  return true; } return false;  そこで、if文内の判定方法なのですが、  良い方法がありましたら、  お教え願えませんでしょうか?  よろしくお願いします。

    • ベストアンサー
    • Java
  • C++/CLIでの時間表示

    VC++2008のC++/CLIで時間の間隔を表示するプログラムを作成しています。 DateTime mySpan = DateTime::Parse(txtStartTime->Text); DateTime dtToday = DateTime::Now::get(); TimeSpan interval = dtToday - mySpan ; String^ strInterval = interval.ToString(); 上記のように,現在と時刻とtxtStartTime->textに表示されている時刻との差を取得しています。 この時, 秒単位の表示が出来ればいいのですが,strInterval の時刻が 00:01:05.12457895... のように不要な小数点まで表示されます。 どのようにすれば, 00:00:00 のような形式で表示できますでしょうか?

  • VB2010で、時刻と時間の計算について

    時刻と時間の計算で、どうするのが最適か教えて下さい。 1…2つの時刻、例えば「08時28分」から「17時04分」までの時間を計算し、Labelにその時間「8時間36分」と表示する 2…3つの時間、例えば「8時間36分」、「6時間08分」、「9時間54分」の合計を計算し、Labelにその合計を表示する 3…上記2番目の平均を計算し、Labelにその平均を表示する よろしくお願いします。

  • C#のタイマーについて

    タイマーのプログラムを作っています。 namespace WindowsApplication3 { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; protected System.Windows.Forms.Label label5; protected System.Windows.Forms.Label label6; protected System.Windows.Forms.Button button1; protected System.Windows.Forms.Button button2; protected DateTime dt; protected DateTime recTime; private System.Windows.Forms.GroupBox groupBox1; protected System.Windows.Forms.RadioButton radioButton1; protected System.Windows.Forms.RadioButton radioButton2; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); DateTime dt; dt=DateTime.Now; string a="00"; string b=a; string c=a; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); label5.Text = string.Format("{0}時{1}分{2}秒",a,b,c); label6.Text = string.Format("{0}時間{1}分{2}秒",a,b,c); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // dt=DateTime.Now; } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 <<  文字数オーバーのため 省略>> /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button2_Click(object sender, System.EventArgs e) { Application.Exit(); } protected void timer1_Tick(object sender, System.EventArgs e) { DateTime dt; dt=DateTime.Now; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); } protected void button1_Click(object sender, System.EventArgs e) { DateTime recTime; recTime=DateTime.Now; TimeSpan k; k=dt-recTime; label5.Text=string.Format("{0}時{1}分{2}秒",recTime.Hour,recTime.Minute,recTime.Second); label6.Text=string.Format("{0}秒",k.Seconds); } } } このプログラムでは ボタン1をクリックするとlabel6に経過時間 label5に記録時間を出力させたいのですが、TimeSpanクラスが上手く使えず、経過時間がマイナスになってしまいます。アドバイスお願いします。

専門家に質問してみよう