代码之家  ›  专栏  ›  技术社区  ›  Gareth

C用于分析人类可读时间跨度的库

  •  13
  • Gareth  · 技术社区  · 15 年前

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

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

    30 days
    1 week
    5 hours
    

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

    我现在不需要像“30天,3小时,5分钟”这样的功能,只需要一个值,但不会有任何伤害!

    6 回复  |  直到 6 年前
        1
  •  4
  •   pkaeding    15 年前

    我曾经尝试过,我和解析器一起玩,因为我对它们一无所知,所以不要期望质量。但是你可以在这里得到代码: http://timestamper.codeplex.com/

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

    编辑:

    刚刚注意到您需要返回TimeSpan对象,而不是日期时间。我提供的代码将返回与今天相关的日期时间,即

    “2天”将是:datetime.now.adddays(2);

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

        2
  •  0
  •   X Pahadi    6 年前

    我正在研究一个主要基于时间篡改的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
  •   Robert Massaioli    15 年前

    好吧,我知道DateJS这个javascript代码对于类似的日期非常有效。你可以从中寻找C代码的灵感。虽然不确定这是否有很大帮助,但可能很有趣。

    请访问www.datejs.com

        4
  •  -1
  •   RC1140    15 年前

    我知道你在找一个库来实现这一点,但似乎喜欢这种语法的人都是Ruby开发人员,而且他们很好地坚持使用Ruby。如果你真的想这样做,那么做一些类似于.NET扩展的事情就非常简单了,因为它更具可读性。看看这篇文章 http://haacked.com/archive/2007/05/24/ruby-like-syntax-in-c-3.0.aspx

    另外,如果您不喜欢本文中的语法,那么您所需要做的就是创建一个解析器,它将向下转换为ticks,TimeSpan构造函数类可以使用这个解析器。

        5
  •  -1
  •   BCS    15 年前

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

        6
  •  -3
  •   Wael Dalloul    15 年前

    这是日期和时间的可用分析方法:

    Parsing Date and Time Strings