Какой слой даты должен быть отформатирован? - PullRequest
4 голосов
/ 09 февраля 2010

В каком слое системы должна быть отформатирована дата? Должна ли дата быть отформатирована, когда она выбрана из базы данных (уровень данных), или она должна быть отформатирована на уровне представления?
Я думаю, что форматирование - это визуальное предпочтение, поэтому я бы хотел разместить его как можно ближе к уровню представления.

Где вы храните строку формата для предпочтительной даты?

Ответы [ 6 ]

7 голосов
/ 09 февраля 2010

Дата (также как деньги и другие числовые форматы) должна быть отформатирована на уровне представления. Строка формата обычно является частью информации о локали. Я бы предложил почитать об интернационализации (также известной как i8n). Учитывая, что ваш псевдоним C # ', вот одно место, чтобы посмотреть:

Интернационализация Microsoft .Net

1 голос
/ 09 февраля 2010

Абсолютно да, форматирование происходит на уровне представления. Вплоть до этого момента вы храните данные в любом внутреннем формате, который больше всего имеет смысл - для дат, которые могут быть как DATETIME или эквивалентными, или как двоичное представление; все, что лучше для сортировки, хранения и т. д.

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

Эти атрибуты, по сути, являются вашей «строкой форматирования», и вы сохраните их в базе данных (если она централизована) или, возможно, в локальном файле конфигурации на ПК пользователя. Лично я склонен хранить в базе данных «стандартные» или «общие» правила по умолчанию, а затем добавлять переопределения, специфичные для пользователя или региона, в точке отображения.

1 голос
/ 09 февраля 2010

Дата должна быть отформатирована как можно ближе к презентации, как вы заявляете.

Если в ОС уже есть форматирующая информация (локализация), используйте ее и не сохраняйте копию!

1 голос
/ 09 февраля 2010

Вы должны отформатировать свою дату на уровне представления. Я обычно помещал бы свойство даты в виде строкового типа в мою ViewModel и чтобы при его настройке во ViewModel происходило форматирование. Сохраните его как обычный объект даты в вашей сущности.

0 голосов
/ 09 февраля 2010

Еще один голос за форматирование на уровне представления. Я бы пошел еще дальше и посмотрел, должны ли даты храниться в UTC в базе данных, и конверсия происходит выше в потоке.

0 голосов
/ 09 февраля 2010

Все форматирование должно выполняться на уровне представления IMHO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...