私は、2つのマスクされたTextBoxコントロールを持っていて、それぞれの時間を取得し、その差をミリ秒に変換する方法を知りました。 tb1で "12:01"と書いて、tb2で "12:02"と書いて、ボタンをクリックします。ボタンをクリックするとタイマーが開始され、12時02分にメッセージボックスが表示されます。私は時間変換部分を除いてすべてを行う方法を知っています。差分をミリ秒に2回変換する?
どのように達成できますか?
私は、2つのマスクされたTextBoxコントロールを持っていて、それぞれの時間を取得し、その差をミリ秒に変換する方法を知りました。 tb1で "12:01"と書いて、tb2で "12:02"と書いて、ボタンをクリックします。ボタンをクリックするとタイマーが開始され、12時02分にメッセージボックスが表示されます。私は時間変換部分を除いてすべてを行う方法を知っています。差分をミリ秒に2回変換する?
どのように達成できますか?
DateTime dt1 = DateTime.Parse(maskedTextBox1.Text);
DateTime dt2 = DateTime.Parse(maskedTextBox2.Text);
TimeSpan span = dt2 - dt1;
int ms = (int)span.TotalMilliseconds;
タイトルの質問に答えるために:
DateTime d1 = ...;
DateTime d2 = ...;
TimeSpan diff = d2 - d1;
int millisceonds = (int) diff.TotalMilliseconds;
をあなたはタイマーを設定するためにこれを使用することができます。
timer1.interval = millisceonds;
timer1.Enabled = true;
はダニを処理する際にタイマーを無効にすることを忘れないでください。
しかし、あなたは 12:03にイベントをしたい場合は、ちょうどd1
のためDateTime.Nowを代用。
しかし、textBox1とtextBox2の正確な機能が何であるかは不明です。
ミリ秒ではなく、TotalMillisecondsを使用する必要があります。 – MusiGenesis
"Milliseconds"ではなく "TotalMilliseconds"が必要です ミリ秒では、時間の全範囲ではなく、時間差の「剰余」のミリ秒しか得られません。 2.475秒でミリ秒= 475、TotalMilliseconds = 2475 – StarPacker
はい、修正されました。 Darn TimeSpanインターフェイス。 –
あなたは、その後、(T1、T2)のDateTimeにテキストボックスの値を変換する必要があります。
DateTime t1,t2;
t1 = DateTime.Parse(textbox1.Text);
t2 = DateTime.Parse(textbox2.Text);
int diff = ((TimeSpan)(t2 - t1)).TotalMilliseconds;
それともDateTime.TryParse(T1アウトのTextBox1を、)を使用します。 エラー処理はあなた次第です。
脳の記憶からの書き込み:)) –
初めての方には:TotalMillisecondsを使用する必要があります(毎回0を返すのが好きでない限り)。 – MusiGenesis
試してみてください。
DateTime first;
DateTime second;
int milliSeconds = (int)((TimeSpan)(second - first)).TotalMilliseconds;
TimeSpanに型キャストする必要はなく、TotalMillisecondsは2倍です。 –
キャストはパフォーマンスを傷つけず、意図をより明確にします。戻り値のintへのキャストも意味があります。なぜなら、OPが望んでいるように、タイマーでそれを使用するには、キャストする必要があるからです。ところで、コードは例として意味されているので、何か間違っていて投票の価値がある場合は、詳しく説明してください。 –
戻り値のキャストはありません。最後の行はコンパイルされません。 –
は、以下のことを試してみてください。
DateTime dtStart;
DateTime dtEnd;
if (DateTime.TryParse(tb1.Text, out dtStart) && DateTime.TryParse(tb2.Text, out dtEnd))
{
TimeSpan ts = dtStart - dtEnd;
double difference = ts.TotalMilliseconds;
}
あなただけの12時02分で、メッセージボックスを表示したい場合は、250msの、たとえば、遅れてタイマーコントロールを使用し、現在の時刻が12時02分であるかどうかをチェックし続けます。表示されている場合は、メッセージを表示してタイマーを停止します。これは、開始時刻フィールドを必要としないことに注意してください(あなたが他の何かのためにそれを使用しているかもしれません - 私は知らない - ここであなたに提供された他のコードが役に立ちます)。
タイムズと日付を扱っていない場合は、TimeSpanを扱い、深夜のクロスオーバーを処理したいと思うでしょう。
TimeSpan time1 = ...; // assume TimeOfDay
TimeSpan time2 = ...; // assume TimeOfDay
TimeSpan diffTime = time2 - time1;
if (time2 < time1) // crosses over midnight
diffTime += TimeSpan.FromTicks(TimeSpan.TicksPerDay);
int totalMilliSeconds = (int)diffTime.TotalMilliseconds;
var firstTime = DateTime.Now;
var secondTime = DateTime.Now.AddMilliseconds(600);
var diff = secondTime.Subtract(firstTime).Milliseconds;
// var diff = DateTime.Now.AddMilliseconds(600).Subtract(DateTime.Now).Milliseconds;
この回答には注意してください。 'TotalMilliseconds'の代わりに 'Milliseconds'を使用すると、異なる結果が得られます。前者は時間軸のミリ秒単位を与え、後者はミリ秒単位で表される合計時間を与えます。 –
上記のソリューションの多くは、別の人を、スイートかもしれません。
私は「MusiGenesis」によって最も受け入れられている解決策より少し修正されたコードを提案したいと思います。
DateTime firstTime = DateTime.Parse(TextBox1.Text);
DateTime secondTime = DateTime.Parse(TextBox2.Text);
double milDiff = secondTime.Subtract(firstTime).TotalMilliseconds;
考慮事項:
- earlierTime.Subtract(laterTime)
あなたは負の値を取得します。
- 、同じコードが2つのDate値の差を取得するために使用することができ、あなたが.TotalMilliseconds
public static Int64 GetDifferencesBetweenTwoDate(DateTime newDate, DateTime oldDate, string type)
{
var span = newDate - oldDate;
switch (type)
{
case "tt": return (int)span.Ticks;
case "ms": return (int)span.TotalMilliseconds;
case "ss": return (int)span.TotalSeconds;
case "mm": return (int)span.TotalMinutes;
case "hh": return (int)span.TotalHours;
case "dd": return (int)span.TotalDays;
}
return 0;
}
VB.netのinsteaf .TotalDays
または.TotalHours
を得ることができます - あなたは、整数値の代わりに、二重の
が必要な場合int milDiff = (int)DateTime.Now.Subtract(StartTime).TotalMilliseconds;
を使用デスクトップアプリケーション。経過時間がミリ秒で必要な場合:
Dim starts As Integer = My.Computer.Clock.TickCount
Dim ends As Integer = My.Computer.Clock.TickCount
Dim lapsed As Integer = ends - starts
質問が不明です。あなたは2つのDateTimeの違いや "12:01"のDateTimeへの変換方法を知りませんか? –