是否存在将人类可读时间片解析为.net TimeSpan的库?
我需要能够解析
等字符串的东西30 days
1 week
5 hours
这样的事情存在吗?它可能不是很难写自己,但如果有什么东西,它会更容易!
我目前不需要像“30天,3小时,5分钟”这样的功能,只需要一个值,但它不会受到伤害!
答案 0 :(得分:4)
我在这个时候拿了一个破解,我正在玩解析器,因为我对它们一无所知,所以不要期待质量。但您可以在此处获取代码:http://timestamper.codeplex.com/
我暂时没看过它,但我很确定它可以做你上面提到的所有事情。
编辑:
刚才注意到你想要一个timepan对象返回而不是一个日期时间。我提供的代码将返回与今天相关的DateTime,即
“2天”将是:DateTime.Now.AddDays(2);
至少我认为这是做了什么,可以肯定。如果是这种情况,您应该能够获得两个DateTimes之间的时间跨度。
答案 1 :(得分:2)
这可能早就该了,但是Microsoft最近发布了其提取器和解析器的nuget包和源,它们是LUIS(Azure中的语言服务)的基础。
您可以在这里找到它们: GitHub Repo
我的猜测是,对于大多数项目来说,这就像用手提钻打苍蝇一样,但是幸运的是,可以独立下载单独的软件包(例如,用于DateTime的软件包)。
答案 2 :(得分:0)
我主要基于时间戳来研究Dotnet框架(和dotnet核心)上的库。
从Nuget安装:HumanDateParser
用法:(返回System.DateTime
)
DateParser.Parse("1 month ago")
DateParser.Parse("after 15 days")
DateParser.Parse("15th feb 2010 at 5:30pm")
答案 3 :(得分:-1)
嗯,我知道datejs javascript代码非常适合这样的日期。您可以将其视为C#代码的灵感来源。不确定这是否有帮助;但可能很有趣。
请访问www.datejs.com
答案 4 :(得分:-1)
我知道您正在寻找一个库来执行此操作,但似乎喜欢这种语法的人是ruby开发人员,他们坚持使用Ruby。如果你真的想这样做,那么做一些类似于.Net Extensions的东西非常简单,它更具可读性。看看这篇文章http://haacked.com/archive/2007/05/24/ruby-like-syntax-in-c-3.0.aspx
此外,如果你不喜欢文章中的语法,那么你需要做的就是创建一个解析器,它可以转换为ticks,可以由timespan构造函数类使用。
答案 5 :(得分:-1)
这不是直接适用的,但是my company已经制定了.NET library来执行此约会。一个适用于跨度的对应物(或多或少正是你所要求的)被计划为“当我们需要它时”。如果有足够的兴趣,那可能会更快。
答案 6 :(得分:-3)
这是日期和时间的可用解析方式: