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,为日期做到这一点。一个适用于跨度的对应物(或多或少正是你所要求的)被计划为“当我们需要它时”。如果有足够的兴趣,那可能会更快。
这是日期和时间的可用解析方式:
以上是关于C#Library解析人类可读的时间跨度的主要内容,如果未能解决你的问题,请参考以下文章
从人类可读的字符串创建 MKPlacemark/CLPlacemark