2010-10-04 3 views
1

Я преобразовал проект VS 2008 в vs 2010, но сохранил его на платформе .NET 3.5. Я не устанавливаю свой язык в приложении.Date.ToShortDateFormat() когда-то использует неправильный язык?

У меня есть пара на компьютерах, работающих под управлением Windows 7 и XP, и у обоих есть область, настроенная на EN-AU.

Когда-нибудь мое приложение вернет короткий формат даты, например MM/dd/YY (EN-US). Как только вы покинете его и начнете снова, он вернется в правильный формат для AU (дд/мм/гг). Опять же, я не устанавливаю свой язык в проекте. (У меня есть некоторые отчеты RDLC, в которых есть EN-US как язык)

Почему бы это не произойти? Я также попытался установить языковой стандарт Thread. Но такое же поведение.

+0

Вы уверены, что CurrentCulture от Thread не испорчен какой-либо сторонней библиотекой или чем-то еще? Возможно, попробуйте записать этот параметр и отформатировать время, когда это произойдет ... И вы можете использовать приведенный ниже код для форматирования для культуры AU явно (просто измените культуру), но я бы не рекомендовал его. –

+0

Проблема заключается в том, что я использую элемент управления Просмотр отчетов. http://social.msdn.microsoft.com/Forums/en-US/vsreportcontrols/thread/d1d3ada6-53fa-4484-8a50-cfec9b13a5b9 –

ответ

1

Это странно. Я бы посоветовал вам не использовать ToShortDate(), поскольку я видел пару проблем из него. Вместо этого я рекомендую использовать следующий код:

Строка formattedDate = someDateTime.ToString ("d", CultureInfo.CurrentCulture);

Это в основном делает то же самое. И вы можете ввести константу вместо «d» для большей читаемости (это короткая строка форматирования даты).

Всегда рекомендуется передавать IFormatProvider, поскольку он работает как комментарий, четко документирующий ваши предположения (в приведенном выше примере я сказал: это строка даты, которую я хочу представить пользователю, если бы я хотел использовать эту дату для дальнейшей обработки, отправьте его по сети и т. д. Я бы использовал CultureInfo.InvariantCulture).

+0

Я использую формат столбца datagridview и установки столбца как «d», а также те же результаты. Иногда он использует формат AUS и формат США. –

+0

Я наблюдал за нынешней культурой и даже пытался установить в явном виде. За исключением того, что при просмотре RDLC/Reports культура любого заданного потока всегда является en-au. –

+0

Каковы проблемы с ToShortDate(), которые вы упомянули? –

3

Datetime.UTC основан на локальном системном времени и зависит ли местная система от летнего времени.

Независимо от того, установлено ли ваше местоположение. Сборщик данных должен автоматически настраиваться на основе UTC и вашей системы.

Проверить эту ссылку, которая дает некоторые полезные советы для DateTime

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/6b3b1e95-e044-46db-94ba-0e75fcf9d2b2/

+0

Но иногда он не должен использовать формат AUS, а формат США - другой. –

+0

Я согласен, он всегда должен использовать настройки вашей системы по умолчанию. –

Смежные вопросы