Member 7969814 Ответов: 2

Как установить системный формат даты по умолчанию DD-MM-YYYY в windows server 2016 .


Мое веб-приложение asp dot net отлично работает в машине разработки. но в сервере преобразование даты и времени не выполняется. ошибка заключается в том, что "строка не была распознана как допустимая дата и время".
я использую этот код.



DateTime D1 = new DateTime();
                DateTime D2 = new DateTime();
                D1 = DateTime.ParseExact(txtFRLdate.Text, "dd/MM/yyyy", CultureInfo.CreateSpecificCulture("en-GB"));
                D2 = Convert.ToDateTime(txtFRLdate.Text, System.Globalization.CultureInfo.GetCultureInfo("hi-IN"));


Я установил серверный язык "Eng India", но он не работает.

Что я уже пробовал:

DateTime D1 = new DateTime();
               DateTime D2 = new DateTime();
               D1 = DateTime.ParseExact(txtFRLdate.Text, "dd/MM/yyyy", CultureInfo.CreateSpecificCulture("en-GB"));
               D2 = Convert.ToDateTime(txtFRLdate.Text, System.Globalization.CultureInfo.GetCultureInfo("hi-IN"));


DateTime.ParseExact(txtFRLdate.Text, "dd/MM/yyyy", CultureInfo.CreateSpecificCulture("en-GB"));

F-ES Sitecore

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

Member 7969814

CultureInfo.CreateSpecificCulture("en-GB")); не работает на сервере, так что же мне делать.

F-ES Sitecore

Однако вы не сказали, что это за вход, и это самое главное. Как сказал OriginalGriff, если вы позволяете людям вводить любую дату формата, то это становится сложным, вы должны сказать им, какой формат вводить, используя проверку, чтобы убедиться, что они это делают, или использовать datepicker или три разных ввода для дня\месяца\года, чтобы устранить двусмысленность.

2 Ответов

Рейтинг:
16

OriginalGriff

Это текстовое поле: вы не можете контролировать то, что пользователь вводит в него. Это может быть действительная дата, а может и нет.
Поэтому не используйте ParseExact, вместо этого используйте TryParseExact, сообщайте о любых проблемах пользователю и позволяйте ему исправить их, прежде чем пытаться снова.
Пользователю должно быть разрешено вводить даты в любом формате, особенно в веб - приложении, где вы понятия не имеете, где находится пользователь и в каком формате он может вводить даты-это ваша работа, чтобы узнать, в каком формате даты установлена его машина, и принять их!

Гораздо лучше не предполагать, что дата в системе находится в любом формате или что пользователь будет вводить данные в любом формате, который вы попросите его - поэтому не используйте текстовое поле, используйте вместо него элемент управления календарем и используйте значение DateTime, которое он туда вводит, - оно будет в "нейтральном" внутреннем формате "тиков с фиксированной даты и времени в прошлом" вместо дней месяцев и лет и будет работать в любой системе.


Рейтинг:
10

Member 7969814

Его очень легко установить на английском языке Индии в языке. перейти к настройке даты сделать сервер короткой датой ДД-ММ-гггг

затем перейдите в Диспетчер служб IIS, нажмите на свое приложение или веб-сайт по умолчанию, нажмите на глобализацию .net, установите culture_info_united_kingdom(en-gb). и это будет прекрасно работать.

спасибо за всю вашу помощь