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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Library解析人类可读的时间跨度相关的知识,希望对你有一定的参考价值。

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

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

30 days
1 week
5 hours

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

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

答案

我在这个时候拿了一个破解,我正在玩解析器,因为我对它们一无所知,所以不要期待质量。但你可以在这里获得代码: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构造函数类使用。

另一答案

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

另一答案

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

Parsing Date and Time Strings

以上是关于C#Library解析人类可读的时间跨度的主要内容,如果未能解决你的问题,请参考以下文章

人类可读的 GUID

从人类可读的字符串创建 MKPlacemark/CLPlacemark

将人类可读的文件大小转换为 ruby​​ 中的字节

对于length / 2,如何添加人类可读的变量名称

Python:elapsedu time(给定总秒数的人类可读时间跨度)

JavaScript 人类可读的毫秒时间戳