как проверить даты в asp.net - PullRequest
3 голосов
/ 26 апреля 2009

У меня возникла эта проблема с датами с "когда-либо"

Я живу в стране, где мы используем британские форматы дат, например, дд / мм / гггг, но каждый раз, когда я пытаюсь выполнить запрос к базе данных sql, размещенной на американском сервере, 100% времени я сталкиваюсь с ошибками.

Convert.ToDateTime("2007-17-5") выдает ошибку, где Convert.ToDateTime("2007-5-17") также выдает ошибку.

Многие методы валидации, множество запросов t-sql и многие другие способы, которые я частично и частично пытался решить в большинстве своих проектов, хотелось бы знать, есть ли у кого-нибудь универсальный способ преобразования строк в дату не вызовет никаких проблем?

или какие-нибудь хорошие ресурсы по работе с датами?

----------- редактирование ... -----------------

даже если я правильно отформатирую даты, запрос к серверу sql не выдаст никакого значения, даже если я уверен, что есть ... например .. если я ищу записи, которые относятся к датам между 1 / С 1 января 2009 г. (1 января 2009 г.) по 5 января 2009 г. (1 мая 2009 г.) записи не возвращаются. И когда я пытаюсь изменить дату в построителе запросов сервера sql, он выдает мне сообщение о том, что это неверная дата, которую я ввожу ...

Ответы [ 3 ]

3 голосов
/ 27 апреля 2009

Используйте DateTime.TryParseExact и укажите некоторый формат, представляющий вашу строку даты

2 голосов
/ 28 апреля 2009

2007-5-17 не является действующей международной датой (ISO 8601), 2007-05-17 является. Если вы собираетесь использовать Международный формат CCYY-MM-DD , вам необходимо включить ведущий 0 s

http://www.w3.org/QA/Tips/iso-date

http://www.saqqara.demon.co.uk/datefmt.htm

2 голосов
/ 27 апреля 2009

Вы обрабатываете много проверки даты в пользовательском интерфейсе.

Во-первых, в вашей веб-конфигурации вам нужно установить свою культуру:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />

Вы можете использовать элемент управления CompareValidator на стороне клиента, установив для атрибута типа значение «Дата».

<CompareValidator ID="id" runat="server"
  ControlToValidate="controltovalidateid"
  ErrorMessage="Invalid Date"
  Type="Date" />

Чтобы ограничить возможности пользователей, я использовал элемент управления календаря в ASP.NET. В этом элементе управления есть одна приятная вещь: вы можете установить формат даты в атрибуте:

<ajaxToolkit:Calendar runat="server"
  TargetControlID="Date1"
  CssClass="ClassName"
  Format="dd/mm/yyyy"
  PopupButtonID="Image1" />

Другая информация

...