【问题标题】:Date time implementation based on culture mvc4基于culture mvc4的日期时间实现
【发布时间】:2013-10-05 15:39:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你为什么将 dates 视为 d/m/y 或 m/d/y 格式的 strings我>?它们不是字符串,只能在向用户显示它们的最后阶段被视为字符串。在所有其他情况下,将它们保留为 日期,这样您就不必担心区域和不明确的格式。

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


【解决方案1】:

我实际上并不认为您正在处理不正确的行为,您很可能正在处理 SAME 底层 DateTime 或 DATE 项目的不同 TEXT 表示:

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

问题的本质:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2014-03-31
    • 2017-09-23
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多