2011-12-14 4 views
2

Мое приложение работает с SQL Server и работает с разными серверами с различной информацией о культуре (например, Ru-Ru, En-US и т. Д.) ... Как я могу вставить в нее значение данных? Мне нужно преобразовать DateTime в строку, зависит от культуры сервера, но как?Информация о культуре SQL Server

+2

Используйте формат «YYYYMMDD» или «YYYYMMDD HH: MM: SS» для даты и времени. Это не зависит от культуры сервера. –

ответ

3

Для culture Specific conversion вы можете использовать:

String s = "14.12.2011"; 

d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("Ru-Ru")); //Russia 
d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("en-US")); //English United States 

Но если вы действительно не можете решить, какие культуры использовать при преобразовании даты в строки и наоборот, а также даты никогда не должны быть показаны к пользователь, то вы можете использовать Invariant Culture:

String s = "14/12/2011" //invariant culture formatted date 

d = DateTime.Parse(s, CultureInfo.InvariantCulture); //parse invariant culture date 

s = d.ToString(CultureInfo.InvariantCulture); //convert to invariant culture string 

и если вы конвертируете ваши даты и сохранение их в виде строк, которые вы можете использовать ISO-8601 date format т.е. YYYYMMDD или YYYYMMDD HH:MM:SS, это всегда будет работать, независимо от выбранных в данный момент языков или настроек культуры в SQL Server.

Следующая Stackoverflow вопроса может помочь вам:

Ссылка: DateTime issue when global culture of the server is different on different servers

Надеется, что это помогает.

+1

Хорошо, спасибо, я постараюсь использовать InvariantCulture и после этого опубликовать здесь завтра –

+0

Да! Кажется, это помогает :) Спасибо! –

+0

Извините, эта проблема повторится ... «InvariantCulture» не помогает :( –

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