Я думаю, что это - полностью вопрос персонального предпочтения и пригодности для обслуживания. Для меня Haml делает шаблоны легче читать и понять, и производительность очень приемлема. В конце язык шаблонной обработки вряд ли будет местом, где необходимо оптимизировать - более вероятные запросы базы данных, представление или объектное кэширование, и т.д.
Однако в случае шаблонов ERb, Вы получите лучшую производительность по существу бесплатно при использовании erubis.
DateTime dt1 = DateTime.Parse(maskedTextBox1.Text);
DateTime dt2 = DateTime.Parse(maskedTextBox2.Text);
TimeSpan span = dt2 - dt1;
int ms = (int)span.TotalMilliseconds;
To answer the title-question:
DateTime d1 = ...;
DateTime d2 = ...;
TimeSpan diff = d2 - d1;
int millisceonds = (int) diff.TotalMilliseconds;
You can use this to set a Timer:
timer1.interval = millisceonds;
timer1.Enabled = true;
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.
Вы должны преобразовать значения текстового поля в 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); Обработка ошибок зависит от вас.
Если вы имеете дело только с Times и без дат вам нужно иметь дело только с 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;
Try the following:
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, используйте таймер с задержкой, скажем, 250 мс, который постоянно проверяет, является ли текущее время 12:02. Когда это произойдет, отобразите сообщение и остановите таймер. Обратите внимание, что для этого не требуется поле времени начала (хотя вы можете использовать его для чего-то еще - я не знаю - в этом случае другой код, предоставленный вам здесь, будет полезен).
Try:
DateTime first;
DateTime second;
int milliSeconds = (int)((TimeSpan)(second - first)).TotalMilliseconds;