0

我有一个我在英国开发的应用程序。我现在已经将它部署到美国服务器并且日期不正确。我有一个日期时间选择器,我已将格式设置为 dd/mm/yyyy,当我选择日期时间选择器时,我注意到当我检查元素时,日期实际上是 2013 年 12 月 10 日。

当我将它存储到数据库时,它被转换为 2013-12-10,然后当我从数据库中检索它时,它实际上是 10/12/2013。

此外,当我在代码中调用 DateTime.Now 时,它会以美国格式(mm/dd/yyyy)返回。我需要一切都保持一致。如何?

我已经尝试在网络配置中设置文化信息,<globalization uiCulture="en-GB" culture="en-GB" />但这没有任何效果,我在 sql server 中将日期存储为 GETDATE() 的某些区域,有时这是作为DateTime

4

1 回答 1

0

我实际上并不认为您正在处理不正确的行为,您很可能正在处理相同基础DateTimeDATE项目的不同 TEXT 表示:

  • 如果 Visual Studio 在具有en-US区域设置的系统上运行,它的检查器显然会在调试器中显示日期时使用这些设置。
  • 如果您正在查看SQL数据类型为 的列DATE,SQL 可能会使用“SQL”标准表示字符串,这就是您看到“2013-12-10”的原因
  • 当您使用 Object Inspector 检查DateTime选择到控件中的值时,Visual Studio 再次使用系统的设置来显示该日期。它无法向您显示实际的二进制表示。

问题的本质:

  • 确保将您的实际日期(存储在DateTime变量或DATE数据库列中)与其 TEXT 表示区分开来。
  • 确保你得到正确的日期。
  • 确保您的应用程序的用户以预期的格式看到日期。
  • 学习处理只有您作为开发人员才能看到的日期文本表示(SQL 样式表示和 Visual Studio 检查器表示)。
于 2013-10-05T15:45:44.990 回答