如何使用Noda Time解析多种格式?

Jef*_*ger 9 nodatime

我喜欢Noda Time使用命名空间中的*Pattern各种类型处理格式化和解析值NodaTime.Text.但是,用户输入通常不像单个格式那样规则.例如,我们的应用程序使用时间格式,"h:mm tt"但我们希望能够以下列任何格式解析用户输入:

  • h:mm tt
  • h:mmtt (没有空间)
  • h:mm t
  • h:mmt (没有空间)
  • h tt
  • hh:mm
  • 等等...

有没有办法使用Noda Time来解析可能有多种格式的输入?

Jon*_*eet 3

(抱歉这么久才回复这个问题。)

令人恼火的是,看起来我们还没有曝光这一点。

出现在课堂上的野田时间中CompositePattern。不幸的是,目前这是内部的。我提出了问题 147来在某个时候(可能在 1.1 时间范围内)解决这个问题。

目前,最简单的方法可能是使用相同的代码CompositePattern- 您无需IPattern<T>为此创建自己的实现,因为它只是真正Parse有用的方法。(事实上​​,您甚至可以将其编写为 上的扩展方法IEnumerable<IPattern<T>>,尽管我不确定我们是否已经提供了足够的可见性来创建相同类型的失败结果。)