Представление даты рождения - PullRequest
3 голосов
/ 29 ноября 2010

Я работаю над системой журналирования в C # в нашей местной церкви, но у меня возникли проблемы с подключением к базе данных при сохранении дат рождения.Согласно MSDN самая ранняя дата, которую можно представить, это 1 января 1 года. Как я должен записать дату рождения Иисуса Христа и более ранних личностей, которые важны для нас?

Ответы [ 4 ]

1 голос
/ 29 ноября 2010
1 голос
/ 29 ноября 2010

Если вы свободны в выборе типа календаря, я бы порекомендовал вам продолжить с григорианским календарем, который обладает способностью

распознавать две эпохи: BC и AD

http://msdn.microsoft.com/en-us/library/system.globalization.gregoriancalendar.aspx

1 голос
/ 29 ноября 2010

Вам нужно будет свернуть свой собственный класс для обработки дат BC в .NET и сохранить их в базе данных либо в виде строк, либо в виде отдельных полей для года, месяца и дня (в зависимости от того, какая точность требуется), если вам требуется поиск и сортировка выполняются на стороне базы данных (что, я полагаю, будет)

Поддержка дат в SQL Server более ограничительна, чем в .NET (она восходит к 1753, 1752 или около того).

Это сообщение в блоге является одной из возможных реализаций, хотя и довольно ограниченной, поскольку в ней хранится только год. Но я уверен, что вы можете изменить его по мере необходимости для ваших нужд. Например, возможно, было бы неплохо реализовать некоторые интерфейсы, такие как IComparable, IEquatable, IFormattable и, возможно, IConvertible, если вы заинтересованы, чтобы лучше взаимодействовать с остальной частью фреймворка.

0 голосов
/ 29 ноября 2010

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

Альтернативный ответ - существуют стандартные способы преобразования даты в число дняи обратно ...

http://en.wikipedia.org/wiki/Julian_day

Если вы выполняете конвертацию самостоятельно, вы в основном сохраняете число (которое просто соответствует дате), поэтому у вас не должно быть проблем.Ну, кроме проверки правильности ваших конверсий.

...