Лучший подход / тип (ы) данных для даты и два раза в .Net 4 - PullRequest
0 голосов
/ 26 августа 2010

У меня есть метод, который принимает некоторые параметры и генерирует некоторый XML для отправки в [архаичный] веб-сервис.

Мне нужно включить в XML:

Дата (гггг-мм-дд)

Время открытия (чч: мм)

Время закрытия (чч: мм)

В прошлом, когда мне приходилось указывать дату / время отдельно, я брал один параметр DateTime и форматировал дату в одном поле, а время - в другом.

В этом сценарии у меня одна дата и 2 раза в день.

Мой первоначальный подход был 3 поля ввода - одно Дата, 2 раза. Это неправильно, поскольку временные рамки могут охватывать более суток.

Другая идея заключалась в том, чтобы взять 2 даты - использовать одну для поля даты, а затем время от обеих для других полей. Это неправильно, поскольку указанные даты могут быть разными днями.

Последний вариант, о котором я могу подумать, - это параметр OpeningDateTime и временной интервал OpenDuration, однако, поскольку время открытия / закрытия хранится в зависимости от дня недели (а не даты), разработчику потребуется рассчитать сами временные рамки - что кажется глупым, поскольку нарушает принципы СУХОГО. Не говоря уже о том, что время может быть> 1 день

Короче говоря, у меня есть 3 решения, которые будут работать, но ни одно из них не будет считаться правильным - и первые 2 решения будут выявлять проблемы только во время выполнения. Я бы предпочел, чтобы определение метода было таким, чтобы передача неверных данных была трудной (если не невозможной) - это было бы видно во время разработки

Может быть, я слишком анализирую, но должен быть более аккуратный способ сделать это

У кого-нибудь есть предпочтительный метод, и если да, то почему?

1 Ответ

3 голосов
/ 26 августа 2010

То, что вы действительно хотите - это библиотека, в которой есть типы, представляющие "дату" и "время" по отдельности ... например, Время Noda ... но, к сожалению, это не готово для производства пока :( В основном .NET не имеет очень богатого набора хронологических типов: (

Я думаю, что ваша первоначальная идея DateTime + 2 TimeSpans - лучшая идея на данный момент. В частности, тот факт, что DateTime.TimeOfDay - это TimeSpan, говорит о том, что это примерно такое же представление, какое вы можете получить в рамках обычного подхода.

...