Требуется исправить форматирование MVC C # DateTime - PullRequest
1 голос
/ 07 декабря 2011

Как вы можете видеть на скриншоте ниже.У меня Дата, которая 7/12/2011 12:00:00 AM.Дата описана неправильно, даже если я ее отформатирую.7 должно быть днем, а 12 - месяцем.

Как мне исправить это, чтобы получить правильное форматирование для желтой возвращаемой строки?

Date formatting problem

На приведенном ниже снимке экрана Дата - 28.12.2011, 11:00, где 28 - день, а 12 - месяц.Попытка преобразовать эту строку в DateTime для сохранения в поле DateTime SQL Server, но приводит к проблеме преобразования. Кто-нибудь подскажет, почему это так и как это исправить?

Date conversion

Решение:

Я решил проблемукак ниже.Когда я хочу сохранить дату в SQL Server 2008 r2, было сохранено значение по умолчанию, например 2011-08-12 11: 00: 00.000, что вызывало проблемы.Я изменил эту дату форматирования, когда она должна была быть сохранена в SQL, как показано ниже, и она работала

DateTime n = Convert.ToDateTime(start_date);

            var h = String.Format("{0:dd/MM/yyyy}", n);

            if (start_date != "")
            {
                changedEvent.start_date = Convert.ToDateTime(h);
            }

Выходные данные теперь 2011-12-08 11: 00: 00.000.Как вы думаете, какая-нибудь чистая работа вокруг?

Ответы [ 3 ]

1 голос
/ 07 декабря 2011

Вам следует позвонить DateTime.ParseExact(start_date, "dd/MM/yyyy", CultureInfo.InvariantCulture)

0 голосов
/ 07 декабря 2011

Я думаю, что вы решаете не ту проблему. Если вы хотите, чтобы DateTime распознал ваш формат даты локали, то вы должны убедиться, что локаль даты сервера установлена ​​для вашего локального. Затем DateTime будет правильно преобразовывать дату без конвертации.

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

Возможно, вам потребуется явно указать вашу локаль, используя что-то вроде этого:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-MX");
0 голосов
/ 07 декабря 2011

Попробуйте:

DateTime.ParseExact(str, "dd/MM/yyyy HH:mm:ss TT", null); //28/12/2011 11:00:00 AM
DateTime.ParseExact(str, "dd/MM/yyyy HH:mm", null); //28/12/2011 11:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...