формат текущей даты

#c# #sql-server

#c# #sql-сервер

Вопрос:

Есть ли какой-либо способ найти текущий формат даты в часовом поясе? Я извлекаю дату в виде строки из базы данных, и в случае, если текущий формат даты и времени не соответствует, происходит сбой: «Строка не была распознана как допустимая дата и время»

Комментарии:

1. Действительно ли дата хранится в базе данных в виде строки? Если это так, то вам нужно будет определить формат, в котором он хранится, чтобы проанализировать его в вашем приложении

2. Можете ли вы показать код? вы храните дату в виде строк?

3. Почему вы указали C # и три разные версии в тегах, когда на самом деле это вопрос платформы и не имеет ничего общего с C # как языком?

4. и это очень веская причина, по которой вы никогда не должны хранить даты / числа в виде строк и всегда использовать их собственный тип данных.

Ответ №1:

Похоже, что важен не текущий формат даты, как его понимает ваш код, а как он получает его из базы данных. Почему он находится в базе данных в виде строки для начала? Если это вообще возможно, вы должны сделать это соответствующим полем, связанным с датой / временем, в базе данных и заставить драйвер выполнить преобразование.

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

Комментарии:

1. Есть ли какой-либо способ найти текущий формат, используемый в системе?

2. @Pankaj: Какая система? Вы не указали никакого кода или не объяснили, как данные хранятся в базе данных.

Ответ №2:

DateTime.Parse Метод использует формат, который установлен в исполняющем потоке. Смотрите, Thread.CurrentCulture чтобы получить CultureInfo то, что используется при синтаксическом анализе. CultureInfo.DateTimeFormat возвращает формат, который вы ищете.

Если вы знаете формат, вам следует использовать DateTime.ParseExact метод для анализа входной строки в известном формате.

Ответ №3:

Звучит так, как будто вам нужно использовать DateTime.TryParse-метод:

http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx

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