基于文化mvc4的日期时间实施

时间:2013-10-05 15:39:16

标签: c# sql-server asp.net-mvc asp.net-mvc-4

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

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

此外,当我在代码中调用DateTime.Now时,它将以美国格式(mm / dd / yyyy)返回。我需要一切都是一致的。怎么样?

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

1 个答案:

答案 0 :(得分:0)

我实际上并不认为您处理的行为不正确,您最有可能处理基于DateTimeDATE项目的SAME的不同TEXT表示:

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

问题的外壳:

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