C# DateTime.Now在ASP.NET中返回错误的值

C# DateTime.Now在ASP.NET中返回错误的值,c#,asp.net,datetime,C#,Asp.net,Datetime,DateTime.Now和DateTime.UtcNow返回错误的值,如图所示。 即使是ToUniversalTime()函数也会产生相同的值 如何在忽略本地时区的情况下使用DateTime 您使用的文化(看起来像阿拉伯文化之一)不使用公历。如果这不是你想要的,你需要使用不同的文化 如果需要固定区域性,请使用固定区域性: DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture) 这将在每台机器上产生相同的字

DateTime.Now
DateTime.UtcNow
返回错误的值,如图所示。 即使是
ToUniversalTime()
函数也会产生相同的值

如何在忽略本地时区的情况下使用DateTime

您使用的文化(看起来像阿拉伯文化之一)不使用公历。如果这不是你想要的,你需要使用不同的文化

如果需要固定区域性,请使用固定区域性:

DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)
这将在每台机器上产生相同的字符串(当然,提供相同的
DateTime
值),并且可以使用

DateTime.Parse("...", System.Globalization.CultureInfo.InvariantCulture)
如果您不希望持久化的格式设置,只需选择适合您尝试执行的文化即可。每个区域性都有自己的日历、数字格式等


为了说明这一点,
DateTime
值没有格式。格式来自
ToString
(它在调试器和许多其他地方被隐式调用,如
string.format
)<默认情况下,code>ToString采用当前区域性(每个线程),因此在调用
ToString
(或
string.Format
等)时,可以更改该区域性(如果有意义),也可以显式指定所需的区域性。

DateTime.UtcNow返回错误的值是什么意思?怎么会错呢?从您运行代码的位置开始需要时间,因此您的时钟可能不正确?为什么您认为它是错误的日期?调试器正在一个可能不使用公历的区域性中呈现它。请根据您预期的结果澄清您的问题。您几乎肯定要使用<代码> DATEIME。UtcNow < /COD>而不是<代码> DATETIME.现在 -删除时区元素,那么您需要考虑<代码> > DATETIME/<代码>(它始终在公历)与调试器显示的<代码> toStrug()/<代码>值,它具有区域性意识,并将使用您所在区域的默认日历系统。不,
DateTime.UtcNow
返回UTC日期和时间,
ToString
仅将其格式化为您所在区域性。您可以指定要将哪个区域性用于其中一个。此外,如果您提供调试器的屏幕截图,而不仅仅是一个屏幕截图,这会有所帮助。显示您试图实现的目标-可能您希望这些值作为字符串或类似的内容,所以请在代码中显示。在不知道您要实现的具体目标的情况下,很难帮助您。我强烈建议不要在任何服务器端工作中使用
DateTime。现在,
。@JonSkeet,那么我们应该使用什么呢<代码>日期时间.UtcNow?@BehzadShirani:是的,几乎可以肯定。希望服务器的时区具有相关性是非常不寻常的。