Подтвердить что ты не робот

Преобразовать разницу между 2 раза в миллисекунды?

У меня есть два маскированных элемента управления TextBox, и мне было интересно, как я буду получать время в каждом, а затем преобразовать разницу в миллисекунды. Например, скажем, в tb1 пишу "12:01", а в tb2 пишу "12:02", а затем нажимаю кнопку. После нажатия кнопки запускается таймер, и в 12:02 будет отображаться сообщение. Я знаю, как сделать все это, за исключением части преобразования времени.

Как это можно достичь?

4b9b3361

Ответ 1

DateTime dt1 = DateTime.Parse(maskedTextBox1.Text);
DateTime dt2 = DateTime.Parse(maskedTextBox2.Text);
TimeSpan span = dt2 - dt1;
int ms = (int)span.TotalMilliseconds;

Ответ 2

Чтобы ответить на заголовок-вопрос:

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.

Ответ 3

Вам нужно преобразовать значения текстового поля в 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); Обработка ошибок зависит от вас.

Ответ 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;, если вам нужно целое значение вместо double
.TotalDays или .TotalHours insteaf .TotalMilliseconds

Ответ 5

Если вы имеете дело только с 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;

Ответ 6

Try:

DateTime first;
DateTime second;

int milliSeconds = (int)((TimeSpan)(second - first)).TotalMilliseconds;

Ответ 7

Попробуйте следующее:

   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

Если вы хотите отобразить окно сообщения в 12:02, используйте таймер с задержкой, скажем, 250 мс, который проверяет, текущее время 12:02. Когда это произойдет, отобразите сообщение и остановите таймер. Обратите внимание, что это не требует поля времени начала (хотя вы можете использовать это для чего-то другого - я не знаю), и в этом случае вам будет полезен другой код, предоставленный вам здесь.)

Ответ 9

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;

Ответ 10

    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;
    }

Ответ 11

VB.net, настольное приложение. Если вам понадобится время в миллисекундах:

Dim starts As Integer = My.Computer.Clock.TickCount
Dim ends As Integer = My.Computer.Clock.TickCount
Dim lapsed As Integer = ends - starts