保存DateTime.Now切换文化之间

时间:2011-10-22 06:06:35

标签: asp.net-mvc-3 datetime .net-4.0 localization

我有一个asp.net mvc应用程序。它是多语言并在cookie中写入一些值。如果应用程序的currentCulture(语言)和存储在cookie中的DateTime的值具有不同的格式,则会出现此问题。因此,我决定仅在英语文化中存储和检索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 个答案:

答案 0 :(得分:2)

DateTime不存储文化信息。当你致电ToString时,文化很重要。如果要在返回之前使用特定文化格式化它,则需要将其作为字符串返回。

return DateTime.Now.ToString(cultureInfo);

可能您应该将其作为DateTime返回(并且您可能希望使用DateTime.UtcNow以便它跨时区工作)并使用不变文化格式化它:CultureInfo.InvariantCulture。< / p>