В моем файле web.config у меня есть эта строка:Invalid исключение формат даты и времени для норвежской культуры
<globalization culture="auto:en-GB" uiCulture="auto:en-GB" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8"/>
ASP.Net красиво ухаживает всех форматов даты/времени. Применяя следующий код на странице образца ...
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
txt.Text = New DateTime(2010, 1, 25).ToString()
End Sub
Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
Dim dt As DateTime = Convert.ToDateTime(txt.Text.Trim())
Trace.Warn(dt.ToString())
End Sub
С браузером, установленным на английском языке (Великобритания) Я вижу, как отображается
25/01/2010 00:00:00
При нажатии на кнопку, и их преобразования обратно в дату значение DateTime, оно отлично работает.
Если я изменить свой браузер (Chrome) настройки на Норвежский, и загрузить страницу, я вижу это:
25.01.2010 00.00.00
Это опять-таки является правильным, но, если я затем отправить форму, ASP .Net:
Строка не была признана действительной DateTime.
Строка 9: Dim дт Как DateTime = Convert.ToDateTime (txt.Text.Trim())
Почему это происходит? Конечно, если ASP.Net имеет смысл показать даты, основанные на настройках культуры, они должны уметь их читать? Я пробовал английский, английский и английский, и оба работали, как ожидалось, плюс другие, поэтому он каким-то образом связан с норвежцем.
Я думал, что это было сделано автоматически, если IFormatProvider не используется как часть настроек глобализации web.config/по умолчанию? – EvilDr
MSDN указывает на перегрузку (string): '' возвращаемое значение является результатом вызова метода DateTime.Parse по значению с использованием информации форматирования в объекте DateTimeFormatInfo, который инициализирован для текущей культуры''; Я сомневаюсь, что это относится к информации о культуре приложения по умолчанию, которую вы назначили, но к информации о культуре машины, на которой запущено приложение. –
Да, но затем он говорит: 'Если поставщик ничто, используется DateTimeFormatInfo для текущей культуры', что позволяет легко глобализировать, или оно должно быть *. Даже установка текущей культуры на каждом PreRequest не позволяет остановить ошибку. Я думаю, что это может быть ошибка .Net для норвежского языка, поскольку en_GB и en_US работают отлично (в частности) ... – EvilDr