我有两个蒙版的TextBox控件,并且想知道如何在每个控件中获取时间然后将差异转换为毫秒。比如说,在tb1我写“12:01”,在tb2我写“12:02”,然后点击一个按钮。单击按钮后,它将启动一个计时器,并在12:02显示一个消息框。除了时间转换部分,我知道如何做所有这些。
如何实现?
答案 0 :(得分:105)
DateTime dt1 = DateTime.Parse(maskedTextBox1.Text);
DateTime dt2 = DateTime.Parse(maskedTextBox2.Text);
TimeSpan span = dt2 - dt1;
int ms = (int)span.TotalMilliseconds;
答案 1 :(得分:13)
回答标题问题:
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和textBox2的确切功能是什么。
答案 2 :(得分:6)
您必须将文本框的值转换为DateTime(t1,t2),然后:
DateTime t1,t2;
t1 = DateTime.Parse(textbox1.Text);
t2 = DateTime.Parse(textbox2.Text);
int diff = ((TimeSpan)(t2 - t1)).TotalMilliseconds;
或者使用DateTime.TryParse(textbox1,out t1); 错误处理取决于您。
答案 3 :(得分:4)
上述许多解决方案可能适合不同的人 我想建议一个略微修改的代码,而不是“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
答案 4 :(得分:1)
如果您只处理时代而没有约会,那么您只想处理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;
答案 5 :(得分:1)
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;
答案 6 :(得分:0)
尝试:
DateTime first;
DateTime second;
int milliSeconds = (int)((TimeSpan)(second - first)).TotalMilliseconds;
答案 7 :(得分:0)
尝试以下方法:
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;
}
答案 8 :(得分:0)
如果您只想在12:02显示消息框,请使用延迟时间为250毫秒的定时器控件,以便检查当前时间是否为12:02。如果是,显示消息并停止计时器。请注意,这不需要开始时间字段(尽管您可能正在使用其他内容 - 我不知道 - 在这种情况下,此处提供给您的其他代码将有所帮助)。
答案 9 :(得分:0)
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;
}
答案 10 :(得分: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