【问题标题】:C# library to parse human readable time spans用于解析人类可读时间跨度的 C# 库
【发布时间】:2010-11-21 05:44:21
【问题描述】:

是否存在将人类可读时间跨度解析为 .NET TimeSpan 的库?

我需要一些可以解析字符串的东西,例如:

30 days
1 week
5 hours

这样的事情存在吗?自己写可能不太难,但如果有东西,那就容易多了!

我目前不需要像“30 天 3 小时 5 分钟”这样的功能,只是一个值,但不会有什么坏处!

【问题讨论】:

    标签: c# parsing date


    【解决方案1】:

    我在某个时候对此进行了破解,我正在使用解析器,因为我对它们一无所知,所以不要指望质量。但是你可以在这里获取代码:http://timestamper.codeplex.com/

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

    编辑:

    刚刚注意到您希望返回时间跨度对象而不是日期时间。我提供的代码将返回一个相对于今天的 DateTime,即

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

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

    【讨论】:

      【解决方案2】:

      这可能早就应该发布了,但微软最近发布了支持 LUIS(Azure 中的语言服务)的提取器和解析器的 nuget 包和源代码。

      您可以在这里找到它们: GitHub Repo

      我的猜测是,对于大多数项目来说,这就像用手提钻敲打苍蝇一样,但幸运的是,可以独立下载单独的包(例如用于 DateTime 的包)。

      The NuGet package that answers the question

      【讨论】:

        【解决方案3】:

        我正在开发一个主要基于时间戳的 Dotnet 框架(和 dotnet 核心)库。

        从 Nuget 安装:HumanDateParser

        用法:(返回System.DateTime

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

        【讨论】:

          猜你喜欢
          • 2015-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-30
          • 1970-01-01
          • 1970-01-01
          • 2018-02-02
          • 1970-01-01
          相关资源
          最近更新 更多