I have two masked TextBox controls and was wondering how I'd go about getting the time in each one and then converting the difference into milliseconds. Like, say in tb1 I write "12:01" and in tb2 I write "12:02", and then click a button. Once the button's clicked it starts a timer and at 12:02 a messagebox will be displayed. I know how to do all of it except for the time conversion part.
How can it be achieved?
You have to convert textbox's values to DateTime (t1,t2), then:
Or use DateTime.TryParse(textbox1, out t1); Error handling is up to you.
Many of the above mentioned solutions might suite different people.
I would like to suggest a slightly modified code than most accepted solution by "MusiGenesis".
Considerations:
-
earlierTime.Subtract(laterTime)
you will get a negative value.- use
int milDiff = (int)DateTime.Now.Subtract(StartTime).TotalMilliseconds;
if you need integer value instead of double- Same code can be used to get difference between two Date values and you may get
.TotalDays
or.TotalHours
insteaf of.TotalMilliseconds
If you are only dealing with Times and no dates you will want to only deal with TimeSpan and handle crossing over midnight.
To answer the title-question:
You can use this to set a Timer:
Don't forget to disable the timer when handling the tick.
But if you want an event at 12:03, just substitute DateTime.Now for
d1
.But it is not clear what the exact function of textBox1 and textBox2 are.