Как уже говорили другие, вы можете использовать DateTime
и игнорировать дату или использовать TimeSpan
. Лично я не заинтересован ни в одном из этих решений, так как ни один из типов действительно не отражает концепцию, которую вы пытаетесь представить - я считаю, что типы даты / времени в .NET несколько отстают, что является одной из причин, по которой я начал Время Нода . В Noda Time вы можете использовать LocalTime
тип для представления времени суток.
Нужно учитывать одну вещь: время суток не обязательно является продолжительностью времени с полуночи в тот же день ...
(Кроме того, если вы также хотите представить время закрытия магазина, вы можете обнаружить, что хотите представлять 24:00, то есть время в конце дня. Большинство API даты / времени - включая Noda Время - не допускайте, чтобы это было представлено как значение времени суток.)
Duration
в Noda Time илиTimeSpan
в BCL. Я бы, вероятно, инкапсулировал «место в видео + комментарий» как тип, а затем имел бы массив этого типа.Вы можете использовать временной интервал
[Править]
Учитывая другие ответы и редактирование вопроса, я бы все равно использовал TimeSpan. Нет смысла создавать новую структуру, в которой достаточно существующей структуры.
В этих строках вы в конечном итоге продублировали бы много собственных типов данных.
источник
TimeSpan
подобного рода несколько уродлива. Это лучшее, что доступно в самой структуре, но это не то же самое, что сказать, что это приятно.Если эта пустота
Date
действительно вас беспокоит, вы также можете создать более простуюTime
структуру:Или зачем беспокоиться: если вам не нужно делать какие-либо вычисления с этой информацией, просто сохраните ее как
String
.источник
TimeSpan
, которое уже справляется с этим, и значительно лучше.Я говорю использовать DateTime. Если вам не нужна часть даты, просто игнорируйте ее. Если вам нужно отобразить только время для пользователя, выведите его в формате для пользователя следующим образом:
Кажется, что вся дополнительная работа по созданию нового класса или даже по использованию TimeSpan не нужна.
источник
DateTime.Now.ToString("hh:mm:ss.fff");
микросекунды:DateTime.Now.ToString("hh:mm:ss.ffffff");
наносекунды (если даже у DateTime такое большое разрешение):DateTime.Now.ToString("hh:mm:ss.fffffffff");
согласно MSDNЯ думаю, что урок Рубенса - хорошая идея, поэтому я подумал сделать неизменный образец своего класса Time с базовой проверкой.
источник
В дополнение к Chibueze Opata :
источник
Вот полнофункциональный класс TimeOfDay.
Для простых случаев это излишне, но если вам нужна более продвинутая функциональность, как я, это может помочь.
Он может обрабатывать угловые случаи, некоторую базовую математику, сравнения, взаимодействие с DateTime, анализ и т. Д.
Ниже приведен исходный код класса TimeOfDay. Вы можете увидеть примеры использования и узнать больше здесь :
Этот класс использует DateTime для большинства своих внутренних вычислений и сравнений, чтобы мы могли использовать все знания, уже встроенные в DateTime.
источник
Если вы не хотите использовать DateTime или TimeSpan и просто хотите сохранить время суток, вы можете просто сохранить секунды с полуночи в Int32 или (если вы даже не хотите секунд) минуты с полуночи будет вписываться в Int16. Было бы тривиально написать несколько методов, необходимых для доступа к часам, минутам и секундам из такого значения.
Единственная причина, по которой я могу избежать DateTime / TimeSpan, заключается в том, что размер структуры имеет решающее значение.
(Конечно, если вы используете простую схему, подобную описанной выше, в классе, то в будущем также будет тривиально заменить хранилище на TimeSpan, если вы вдруг поймете, что это даст вам преимущество)
источник