2015-04-29 5 views
1

У меня есть отметка времени (635655080937662522) Я создал с C# и сохранил в столбце базы данных. Как я могу проверить, что это значение является тиком, а не чем-то еще? Имеет ли тик определенный формат?Проверьте, является ли значение тиком в C#

+5

Количество отсчетов - это всего лишь число, поэтому все, начиная от 0 до long.MaxValue приемлемо. – Gusman

+1

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

+2

Я полагаю, что «недействительный тик» будет указывать на год 2410, например? Если это так, вы можете создать «DateTime» из тиков и проверить, находится ли он в разумном диапазоне дат. Вы должны, однако, спрашивать себя: «Почему это когда-либо было бы недопустимым числом, и что я могу сделать, чтобы предотвратить это?» – SimpleVar

ответ

2

Ключ - это номер, на самом деле вы не можете проверить больше.

Вы можете проверить, действительно ли фактическое время в определенном диапазоне, которое имеет смысл для вашего случая, но оно специфично для конкретного приложения.

1

Как говорили другие, тик - это всего лишь число, но есть некоторые важные отличия, в зависимости от того, откуда появился тик.

  • Клещей из DateTime или DateTimeOffset являются 100ns каждый, и в диапазоне от DateTime.MinValue.Ticks до DateTime.MaxValue.Ticks, который 0 к 3155378975999999999. Обратите внимание, что это намного меньше, чем Int64.MaxValue.

  • Клещей из TimeSpan также 100ns каждый, но в диапазоне от TimeSpan.MinValue.Ticks до TimeSpan.MaxValue.Ticks, которая является такой же, как в диапазоне от Int64, который -9223372036854775808 к 9223372036854775807.

  • Клещи от Stopwatch (в пространстве имен System.Diagnostics) имеют разный размер, в зависимости от аппаратных возможностей системы. Обычно они составляют около 4 нс на современном оборудовании. Вы можете настроить их на TimeSpan клещей, используя Stopwatch.Elapsed.Ticks вместо Stopwatch.ElaspedTicks, или принимая во внимание ваши расчеты Stopwatch.Frequency. Диапазон: 0 - Int64.MaxValue.

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