【问题标题】:Convert to DateTime "05:10:15D+0"转换为日期时间“05:10:15D+0”
【发布时间】:2012-11-20 11:41:38
【问题描述】:

我在将 "05:10:15D+0" 转换为 DateTime 时遇到问题。路透社的数据类型为“bftime”,时间为 GMT/UTC。

我不想对其进行子串化,因为我有多个市场数据提供商,如果市场尚未开放,它们会将这个值发送为日期。

以下是我尝试转换的方式。ToDateTime

MDLastTick =  Convert.ToDateTime(LastTick);

例外:

字符串未被识别为有效的日期时间。从索引 8 开始有一个未知单词。

【问题讨论】:

  • 您是否指定了文化?
  • 什么是累积更新?
  • @HamletHakobyan:持有他想要转换的数据的对象......
  • 您是否有任何指向bftime 格式文档的链接?或者至少解释一下它是由什么组成的?

标签: c# .net datetime datetime-format reuters


【解决方案1】:

您拥有的不是日期时间,因为它缺少日期部分。你只有时间,所以考虑使用TimeSpan.Parse

【讨论】:

  • 谢谢,但是如果我得到 DateTime ,我该如何解析它?
  • @Rauld - 如果没有日期组件,您将无法获得DateTime。没有办法解决这个问题。但是,您可以编造一个日期并使用它。
  • 无法将其解析为 TimeSpan 字符串 s = "05:10:15D+0"; TimeSpan s1 = TimeSpan.Parse("05:10:15D+0");异常:字符串未被识别为有效的时间跨度。
  • 路透社发送它自己的格式“bftime” - 现在研究它,如果交易还没有开始,彭博会发送一个日期。
【解决方案2】:

您可以使用这个正则表达式来获取时间部分:\d{1,2}:\d{1,2}:\d{1,2}(或者只使用前 8 个字符作为子字符串) - 然后是 datetime.parse 匹配时间。您知道它始终是 UTC,因此您可以忽略 D+0。

然而,这只是一个时间,而不是日期时间。

【讨论】:

  • 谢谢 :) 初始测试非常适合这种方法。测试更多
猜你喜欢
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多