【问题标题】:SQLite 'string was not recognized as valid DateTime'SQLite '字符串未被识别为有效日期时间'
【发布时间】:2015-08-24 23:32:57
【问题描述】:

我试图从我的 SQLite 数据库中的每一行检索 DateTime 信息,但我收到错误“字符串未被识别为有效的 DateTime”,我不太清楚为什么会发生这种情况,所以请提供帮助将不胜感激。

foreach (DataRow row in table.Rows)
{
    string gameName = row["GameName"].ToString();
    //DateTime releaseTime = (DateTime)row["ReleaseTime"];
    DateTime releaseTimeGB = DateTime.ParseExact("dd/mm/yyyy", row["ReleaseTime"].ToString(), new CultureInfo("en-GB"));
    gameInfo.Add(new GameInfo() { Name = gameName, ReleaseTime = releaseTimeGB});
}

现在,上面代码中注释掉的部分确实有效,但它以我不想要的格式检索 DateTime 信息,因此错误来自 ParseExact() 方法。在线查看后,很明显错误的确切来源是在 row["ReleaseTime"] 上调用 ToString() 方法,但我不确定如何纠正这个问题,因为这是我第一次使用 SQLite。

【问题讨论】:

  • row["ReleaseTime"]的值和类型是什么?
  • @DavidG 它应该是 DateTime 因为这是我在执行 SQL 以创建行时指定的,每行的值类似于 '2015-09-01 00:00:00'跨度>

标签: c# wpf sqlite datetime


【解决方案1】:

row["ReleaseTime"] 的值已经是一个DateTime 对象,因此您无需将其转换为带有ToString 的字符串,然后再将其转换回DateTime。而是直接将其转换为DateTime

DateTime releaseTimeGB = (DateTime)row["ReleaseTime"];

或者更好的是,为DataRow 使用Field 扩展:

DateTime releaseTimeGB = row.Field<DateTime>("ReleaseTime");

【讨论】:

  • 是的,这就是我最初所做的,但问题是我希望将其设置为英国日期格式,即 dd/mm/yyyy,这就是我使用 .ParseExact() 的原因,但使用 .ParseExact() 意味着我需要将 row["ReleaseTime"] 转换为发生错误的字符串
  • @CallumHoughton - 你倒退了。 DateTime 实例不关心/知道它将以什么格式显示。只有在需要将其放在屏幕上时,您才应该指定格式。
  • @Igor 哦,好吧,那我怎么把它转换成 GB 格式?
  • @CallumHoughton - releaseTimeGB.ToString("dd/mm/yyyy") - 当您需要将字符串显示给用户时。
  • @CallumHoughton 不客气,继续努力提高自己。总会有进步的空间:)
【解决方案2】:

如果将其转换为 ToString,则它采用特定于文化的格式。 因此,如果您再次想将该字符串转换为 DateTime,则必须使用该文化特定格式。 而且我认为 EN-GB 格式不是 dd/mm/yyyy。它是 mm/dd/yyyy。

【讨论】:

  • 不,对于 GB,它应该是 dd/mm/yyyy,但即使将 'new CultureInfo("en-GB")' 替换为 'CultureInfo.CurrentCulture' 仍然会返回相同的错误。
  • 如果你想将值存储为字符串,那么简单地使用 string date = DateTime.ToString("dd/MM/yyyy");
  • 试试这个 DateTime.ParseExact("dd/mm/yyyy", row["ReleaseTime"].ToString(dd/mm/yyyy), new CultureInfo("en-GB"));
猜你喜欢
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 2013-02-07
  • 2011-10-21
  • 2017-08-03
相关资源
最近更新 更多