我有两个蒙面TextBox控件,并想知道我怎么会去获得每一个时间,那么差价转化为毫秒。 像,说在TB1我写的“12:01”,并在TB2我写的“12:02”,然后单击一个按钮。 一旦按钮的点击它启动一个计时器,并在12:02一个消息框会显示出来。 我知道该怎么做这一切除了时间变换。
怎样才能实现?
我有两个蒙面TextBox控件,并想知道我怎么会去获得每一个时间,那么差价转化为毫秒。 像,说在TB1我写的“12:01”,并在TB2我写的“12:02”,然后单击一个按钮。 一旦按钮的点击它启动一个计时器,并在12:02一个消息框会显示出来。 我知道该怎么做这一切除了时间变换。
怎样才能实现?
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的事件,刚刚替补DateTime.Now为d1
。
但目前尚不清楚是什么textBox1的1和TextBox的确切功能是。
你必须文本框的值转换为日期时间(T1,T2),则:
DateTime t1,t2;
t1 = DateTime.Parse(textbox1.Text);
t2 = DateTime.Parse(textbox2.Text);
int diff = ((TimeSpan)(t2 - t1)).TotalMilliseconds;
或者使用DateTime.TryParse(TextBox1中,从T1); 错误处理是由你。
许多上面提到的解决方案可能会适合不同的人。
我想提出比“MusiGenesis”最接受的解决方案稍作修改代码。
DateTime firstTime = DateTime.Parse( TextBox1.Text );
DateTime secondTime = DateTime.Parse( TextBox2.Text );
double milDiff = secondTime.Subtract(firstTime).TotalMilliseconds;
注意事项 :
- earlierTime.Subtract(laterTime)
你会得到一个负值。
-使用int milDiff = (int)DateTime.Now.Subtract(StartTime).TotalMilliseconds;
如果你需要整数值,而不是双
-同样的代码可用于两个日期值之间的差异得到,你可能会得到.TotalDays
或.TotalHours
insteaf的.TotalMilliseconds
如果你只处理时间,并没有约会,你会想只处理时间跨度和处理穿越而过午夜。
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;
尝试以下方法:
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。 当是时,显示消息,并停止计时器。 请注意,这并不需要一个开始时间字段(虽然你可以使用其他的东西 - 我不知道 - 在这种情况下提供的其他代码到你在这里会有所帮助)。
尝试:
DateTime first;
DateTime second;
int milliSeconds = (int)((TimeSpan)(second - first)).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,桌面应用程序。 如果您需要在毫秒经过时间:
Dim starts As Integer = My.Computer.Clock.TickCount
Dim ends As Integer = My.Computer.Clock.TickCount
Dim lapsed As Integer = ends - starts