【问题标题】:Convert string("2015-03-24T12:31:33.8700000") to c# datetime [duplicate]将 string("2015-03-24T12:31:33.8700000") 转换为 c# datetime [重复]
【发布时间】:2016-04-26 05:13:40
【问题描述】:

我需要将带有datestring 转换为有效的c# 日期时间对象。

input string example = "2015-03-24T12:31:33.8700000"
output c# datetime

我试过这样做

 DateTime.ParseExact(x.claimDetails.clmDOA, "yyyy-MM-dd HHmmss", CultureInfo.InvariantCulture)

但它给出了异常

String was not recognized as a valid DateTime

请注意:我用谷歌搜索了一番。不知何故我找不到任何字符串 "T" 包含在 datetime 字符串中。

  • 在否决之前,如果有人可以建议我确切回答问题的位置,其中包含T 或这种格式的日期时间字符串。yyyy-MM-dd'T'hh:mm:ss.fffffff

【问题讨论】:

  • 你试过了吗?
  • 对于一个与 C# 本身一样古老的问题,我们真的想要这么多答案吗?我敢打赌这是重复的
  • @HimBromBeere - 但不是 Python 问题。这个问题很详细,需要用 ParseExact 和 T 等进行精确的欺骗。
  • @HenkHolterman 很公平,但我猜有一个......

标签: c# datetime


【解决方案1】:
DateTime dt = DateTime.Parse(example);

【讨论】:

  • @SonerGönül 在示例中,日期时间采用 ISO 格式,在这种情况下文化并不重要。
【解决方案2】:
DateTime dt = DateTime.ParseExact(example, "yyyy-MM-dd'T'hh:mm:ss.fffffff", CultureInfo.InvariantCulture);

应该适合你。

【讨论】:

  • 错误 - “DateTime 模式 'm' 以不同的值出现不止一次”
【解决方案3】:

来自DateTime.ParseExact documentation

将日期和时间的指定字符串表示形式转换为其 日期时间等效。 字符串表示的格式必须 完全匹配指定格式或抛出异常

在你的情况下,它们不是。

您需要使用T 作为字符串文字分隔符,将: 指定为TimeSeparator 和秒小数(使用fffffff specifier)。

var dt = DateTime.ParseExact("2015-03-24T12:31:33.8700000", 
                             "yyyy-MM-dd'T'HH:mm:ss.fffffff", 
                             CultureInfo.InvariantCulture);

【讨论】:

  • 这个答案和 Arijit 发布的其他答案有什么区别?
  • @FrédéricHamidi 因为我使用InvariantCulture 作为IFormatProvider,所以我认为这里不是这种情况。当然,不能保证将来不会改变这种文化,但就目前而言,没关系。
  • 非常正确,我错过了InvariantCulture。别介意我:)
  • 他为用户提供了详尽的解释和链接,以便他可以学习并停止发布这些简单的问题,而我的回答是紧急解决问题
  • @ArijitMukherjee 是的,hh specifier 表示从 0112 的 12 小时格式,但 HH specifier 表示从 0023 的 24 小时格式
【解决方案4】:
DateTime.ParseExact(example , "yyyy MM dd HH:mm:ss", CultureInfo.InvariantCulture);

【讨论】:

  • 不,你的格式不对。
猜你喜欢
  • 1970-01-01
  • 2013-06-17
  • 2019-06-24
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
相关资源
最近更新 更多