C#Library解析人类可读的时间跨度

是否存在将人类可读时间片解析为.net TimeSpan的库?

我需要能解析字符串的东西

30 days 1 week 5 hours 

这样的事情存在吗? 它可能不是很难写自己,但如果有什么东西,它会更容易!

我目前不需要像“30天,3小时,5分钟”这样的function,只需要一个值,但它不会受到伤害!

我在这个时候接受了一个破解,我正在玩解析器,因为我对它们一无所知,所以不要期待质量。 但是你可以在这里获得代码: http : //timestamper.codeplex.com/

我暂时没看过它,但我很确定它可以做你上面提到的所有事情。

编辑:

刚才注意到你想要一个timepan对象返回而不是一个日期时间。 我提供的代码将返回与今天相关的DateTime即

“2天”将是:DateTime.Now.AddDays(2);

至少我认为这是做了什么,可以肯定。 如果是这种情况,您应该能够获得两个DateTime之间的时间跨度。

我正在使用主要基于时间戳的Dotnet框架(和dotnet核心)上的库。

从Nuget安装: HumanDateParser

用法:(返回System.DateTime

 DateParser.Parse("1 month ago") DateParser.Parse("after 15 days") DateParser.Parse("15th feb 2010 at 5:30pm") 

好吧,我知道datejs的javascript代码非常适合这样的日期。 您可以查看它以获取C#代码的灵感。 不确定这是否有帮助; 但可能很有趣。

请访问www.datejs.com

我知道你正在寻找一个库来做这个,但似乎喜欢这种语法的人是ruby开发人员,他们坚持Ruby。 如果你真的想这样做,那么做一些类似于.Net Extensions的东西非常简单,它更具可读性。 看看这篇文章http://haacked.com/archive/2007/05/24/ruby-like-syntax-in-c-3.0.aspx

此外,如果你不喜欢文章中的语法,那么你需要做的就是创建一个解析器,它可以转换为ticks,可以由timespan构造函数类使用。

它不是直接适用的,但是我的公司开发了一个.NET 库来完成日期。 一个适用于跨度的对应物(或多或少正是你所要求的)被计划为“当我们需要它时”。 如果有足够的兴趣,那可能会更快。

这是日期和时间的可用解析方式:

解析日期和时间字符串