2016-02-13 2 views
-4

У меня есть строка типа 03223311 (hhmmssff). Я собираюсь сравнить его с DateTime.Now и посмотреть, не отличается ли разница между этими значениями до 200 миллисекунд.Разница между двумя строковыми значениями и теперь

xdate="03223311"; 

    if(Math.Abs(Convert.ToInt32(xdate) - Convert.ToInt32(DateTime.Now.ToString("hhmmssff")))<200) 

Я попытался запустить линию выше в таймере с интервалом в 1, но я не могу добраться до этого состояния, даже если я изменить xdate текущее время .... Вы знаете, как решить проблему или даже лучше подойти?

+0

И мы до сих пор нет ответа, почему это не работает. Только я знаю, что DateTime.Now бесполезен, когда вы делаете измерения производительности. Он не обновляется в миллисекундах. В таких случаях я должен использовать секундомер. – Ivan

ответ

3
string input = "03223311"; 

var diff = DateTime.Now.TimeOfDay.Subtract(
       TimeSpan.ParseExact(input, "hhmmssff", null) 
      ).TotalMinutes; //or any other value like TotalMilliseconds 
2

Я бы сначала преобразовал строку в DateTime, чтобы вы могли сравнивать яблоки с яблоками и использовать функции объекта DateTime. Когда у вас есть два объекта DateTime, вы можете вычесть их для получения TimeSpan. TimeSpan будет иметь свойство TotalMilliseconds, которое вы можете сравнить с константой 200.

var xdateValue = DateTime.ParseExact(xdate, "hhmmssff", CultureInfo.InvariantCulture); 
var difference = DateTime.Now - xdateValue; 
if (difference.TotalMilliseconds < 200) ... 
1
if (((DatetTime.Now - DateTime.ParseExact("03223311 ", "hhmmssff", CultureInfo.InvariantCulture))).Milliseconds > 200) 
{ 

} 
Смежные вопросы