【问题标题】:Does the C# Convert.ToDateTIme function read date as "dd/mm/yyyy" or "mm/dd/yyyy"?C# Convert.ToDateTIme 函数是否将日期读取为“dd/mm/yyyy”或“mm/dd/yyyy”?
【发布时间】:2009-04-21 06:19:52
【问题描述】:

C# Convert.ToDateTIme 函数是否将日期读取为“dd/mm/yyyy”或“mm/dd/yyyy”?

我在本地机器上有相同的应用程序,我已上传到远程共享服务器。它在我的本地机器上运行良好,读取“dd/mm/yyyy”,但在我的远程机器上,它似乎将日期读取为“mm/dd/yyyy”。我在两者上都有相同的文化设置“en-GB”。

我发现这种日期转换非常难以预测。谁能推荐一种从 SQL Server 2005 数据库中读取日期字符串的文化证明方法?

【问题讨论】:

  • @Avinash:鉴于您有超过 500 个代表,我希望您知道如何使用 Markdown 来正确格式化您的问题。 stackoverflow.com/editing-help
  • 也许不是。 Markdown 页面显示“(反引号键位于大多数键盘的左上角。)”但 Avinash 的文化不是美国的。
  • @WindowsProgrammer:我认为你错了。 Avinash 的“文化”几乎肯定是印度的(和我的一样),美国键盘布局是印度的常态。此外,用户不限于使用键盘来格式化问题,因为工具箱为此提供了链接。当人们为无能辩护时,我觉得很奇怪。
  • Avinish 告诉我们他正在使用什么文化。即使 Avinish 来自印度,看起来他/她也不在那里工作。但是您对键盘的看法可能是正确的,因为我似乎记得中文键盘的一半字符排列方式与美国相同。因此,中国 + 印度 + 美国可能会构成世界上“最多”的键盘。
  • 始终使用 YYYY-MM-DD

标签: c# .net sql-server-2005 datetime


【解决方案1】:

听上去……服务器上的一项设置已关闭。

我会用细齿梳检查“区域和语言”选项,并确保某些内容不会被覆盖,但如果失败。

您可以尝试明确设置文化信息

         string x = "21/01/2009";

        CultureInfo ci = new CultureInfo("en-GB");

        Convert.ToDateTime(x, ci);

【讨论】:

    【解决方案2】:

    为什么不简单地使用 datetime 数据类型呢? 然后,从您的 sql 数据阅读器中,使用: reader.GetDateTime(int column)

    另一种选择:如果您必须以字符串形式传递日期,请使用 ISO 格式:yyyy-MM-dd

    【讨论】:

      【解决方案3】:

      您的日期实际上是如何存储在 SQL Server 中的?如果它们存储为datetime,那么您应该能够将它们作为 DateTime 值读取,而无需使用 Convert.ToDateTime()。你能告诉我们查询和/或 C# 代码吗?

      编辑

      你在问题​​的最后提到了 SQL Server,让我大吃一惊!您是否考虑过使用 DateTimePicker 而不是 TextBox? ASP.NET 有日期选择器控件,对吧?然后它可以为你做解析。

      【讨论】:

      • 我想从文本框转换日期时间。在我的本地服务器中,我使用了 Convert.toDatetime("MM/dd/yyyy") 并且这是有效的。但是在上传的服务器中它不起作用... .
      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2011-05-03
      • 2016-01-02
      • 1970-01-01
      • 2018-03-31
      • 2014-05-30
      • 2023-03-26
      相关资源
      最近更新 更多