【问题标题】:Datetime.ParseExact() is not workingDatetime.ParseExact() 不起作用
【发布时间】:2013-02-08 08:55:24
【问题描述】:

我已经用c#编译了下面的代码

string datetime = String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", root.SelectSingleNode("lasttime").InnerText);



lastUpdateTimestamp = DateTime.ParseExact(datetime, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.CurrentCulture);

但在输出中我得到 lastUpdateTimestamp 是 2/8/2013 7:00:24 AM 而不是 02/08/2013 07:00:24 AM

知道我错过了什么吗?

得到这个值后,我正在运行一个查询并得到这个错误

Invalid month in timestamp "2": cannot find leading zero [SQL query syntax invalid or unsupported.]

大家好,我得到了解决方案,我现在不是通过 lastUpdateTimestamp 而是在字符串变量中获取日期并以正确的格式对其值进行测试。它的工作原理

【问题讨论】:

  • root.SelectSingleNode("lasttime").InnerText 的值是多少?
  • 它们有何不同?你正在查看一个 DateTime 对象,它没有任何特定的格式可以显示
  • @animaonline 02/08/2013 07:00:24 AM
  • 您要求DateTime.ParseExact,但您抱怨字符串格式。现在有什么问题?您尚未显示格式化 DateTime 的代码。
  • 我得到的输出是 lastUpdateTimestamp.ToString()。它应该是 02/08/2013 07:00:24 AM,但它显示的是 2/8/2013 7:00:24 AM

标签: c# asp.net datetime


【解决方案1】:

root.SelectSingleNode("lasttime").InnerText 返回一个字符串。

您正在尝试使用 DateTime 格式说明符来格式化字符串。

不确定您要做什么,但这样的事情应该可以工作

string xmlstring = root.SelectSingleNode("lasttime").InnerText;
DateTime parsed = DateTime.ParseExact(xmlstring, "M/d/yyyy h:mm:ss tt");

string datetime = string.Format("{0:MM/dd/yyyy hh:mm:ss tt}", parsed);

【讨论】:

  • 更新了 parseexact 格式以允许单个数字的月、日和小时
【解决方案2】:

来自评论:

我得到的输出是 lastUpdateTimestamp.ToString()。它应该是 02/08/2013 07:00:24 AM,但它显示的是 2/8/2013 7:00:24 AM

lastUpdateTimestamp.ToString() 将使用当前区域性的通用日期时间格式进行格式化。在你的情况下,这显然是M/dd/yyyy...

如果你想要不同的格式,你需要将它指定为DateTime.ToString的参数,例如:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt")

或独立于当前文化的固定格式:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)

【讨论】:

    【解决方案3】:

    所以您的问题不是如何使用Datetime.ParseExact 将字符串解析为DateTime,而是如何从DateTime 中获取正确的字符串:

    DateTime dt = DateTime.Now;
    string dtStr = dt.ToString("dd/MM/yyyy hh:mm:ss tt"
                              , System.Globalization.CultureInfo.InvariantCulture);
    

    结果:

    08/02/2013 10:20:18 AM
    

    但是由于您从数据库中获得了异常:

    找不到前导零 [SQL 查询语法无效或不受支持

    您应该真正使用参数并传递DateTime 而不是string

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      相关资源
      最近更新 更多