我有一个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。
答案 0 :(得分:2)
DateTime
不存储文化信息。当你致电ToString
时,文化很重要。如果要在返回之前使用特定文化格式化它,则需要将其作为字符串返回。
return DateTime.Now.ToString(cultureInfo);
可能您应该将其作为DateTime
返回(并且您可能希望使用DateTime.UtcNow
以便它跨时区工作)并使用不变文化格式化它:CultureInfo.InvariantCulture
。< / p>