2013-10-25 2 views
3

Я работаю над приложением, которому необходимо установить правила на периоды времени. Компания имеет разные филиалы, каждая отрасль может устанавливать свои собственные правила (т. Е. Филиал начинает работу в 8.30 утра, заканчивается в 17:30, с 30-минутной паузой на обед, другая ветка начинается в 9.00, заканчивается в 19.00 с паузой в 1 час. ..).Net - Время суток

Так что мне нужно определить класс (назовем его WorkingDayDefinition на данный момент), где начало и конец на самом деле не являются DateTime, потому что они не относятся ни к одному конкретному дню в частности. В настоящий момент единственная опция, которую я вижу в C#, использует Timespan для установки продолжительности с начала дня, так что 20:30 будет TimeSpan(8,30,0) для добавления в дневную часть того дня.

Является ли это лучшей практикой в ​​C#?

я искал третьих библиотек партий, которые могли бы помочь мне, но до сих пор мой лучший выбор это один:

http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET

, что не является строго то, что мне нужно

ответ

2

Вы можете использовать Noda Time. Это обеспечивает LocalTime(see here):

LocalTime непреложный структура, представляющая время суток, без ссылки на конкретный календарный, часовой пояс или по дате.

Для 8.30 вы могли бы сделать что-то вроде:

LocalTime openingAt = new LocalTime(8, 30); 
1

мне TimeSpam кажется очень подходит для того, что вы хотите. Он содержит промежуток времени, иногда между двумя событиями, но в вашем случае между началом дня и временем начала/окончания работы. Нет причин, по которым я могу думать о том, чтобы не использовать его только потому, что имя могло бы предположить, что это не было первоначальным намерением класса. Кроме того, он уже хорошо интегрируется с DateTimes для любых вычислений времени, которые вам нужно выполнить позже в будущем.

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