我知道如何指定文化,日期格式,时区等......
我的问题是,当您在C#中键入DateTime.Now或DateTime.UtcNow时,它是使用您的服务器端代码运行的Web服务器的文化,还是使用客户端lang / culture of发出请求的网络浏览器?
令我惊讶的是,从我的测试来看,看起来这个服务器代码DateTime.Now没有使用Web服务器的文化。但实际上是在网络浏览器中使用客户端Lang / Cult!?
在web.config中是否有默认情况下指定DateTime.Now/UtcNow在我的Web服务器文化中运行?我只希望在我专门为他们编写代码时应用客户端文化。
答案 0 :(得分:4)
DateTime.Now
和DateTime.UtcNow
根本没有任何文化。只有当你将一个格式化为字符串才能使用文化时......使用哪种文化取决于你如何格式化它。要明确您的代码,只需明确指定文化,例如
string text = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
但是,DateTime.Now
将使用系统本地时区(即服务器上的时区)。这与用于格式化的文化正交。
答案 1 :(得分:2)
正如Jon所提到的,DateTime.UtcNow(或任何DateTime)没有文化 - 它本质上是一个日期的UInt64表示,所以它只是一个数字。当它被转换为字符串以供显示时(包括您的调试器),这将适用于文化。
要解决浏览器文化设置如何影响服务器上的文化设置的问题,您是否可以将culture
设置为auto
部分中的globalization
部分web.config或页面指令(http://msdn.microsoft.com/en-us/library/vstudio/bz9tc508(v=vs.100).aspx)?
要让ASP.NET将UI文化和文化设置为当前浏览器设置中指定的第一种语言,请将UICulture和Culture设置为auto。