Сохранить DateTime.Now между переключением культур - PullRequest
1 голос
/ 22 октября 2011

У меня есть приложение asp.net mvc.Он мультиязычен и записывает некоторые значения в cookie.Проблема возникает, если текущая культура (язык) приложения и значение DateTime, хранящееся в cookie, имеют разные форматы.Поэтому я решил хранить и получать значения DateTime только в английской культуре.Но я столкнулся с проблемой.

 var currentCulture = Thread.CurrentThread.CurrentCulture; //for example, ru-RU
 var currentUICulture = Thread.CurrentThread.CurrentUICulture;

 var englishCulture = CultureInfo.GetCultureInfo("en-US");
 Thread.CurrentThread.CurrentCulture = englishCulture;
 Thread.CurrentThread.CurrentUICulture = englishCulture;

 var dateTime = DateTime.Now;  //  10/22/2011 9:56:15 AM (in English)


 Thread.CurrentThread.CurrentCulture = currentCulture;
 Thread.CurrentThread.CurrentUICulture = currentUICulture;

 return dateTime;              //   22.10.2011 9:56:15 (in Russian). But why?

Я хочу вернуть DateTime.Now в английской культуре.

1 Ответ

2 голосов
/ 22 октября 2011

DateTime не хранит информацию о культуре. Когда вы звоните ToString, культура имеет значение. Если вы хотите отформатировать его с определенной культурой, прежде чем возвращать его, вам нужно вернуть его в виде строки.

return DateTime.Now.ToString(cultureInfo);

Возможно, вы должны вернуть его как DateTime (и вы, вероятно, захотите использовать DateTime.UtcNow, чтобы он работал в разных часовых поясах) и отформатировать его, используя инвариантную культуру: CultureInfo.InvariantCulture.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...