有没有人知道类似于Chronic for Ruby的.NET日期/时间解析器(处理诸如“明天”或“下周四下午3点”之类的东西)?

注意:我写Ruby(这是我对Chronic的了解),但这个项目必须使用.NET。

===============>>#1 票数:11 已采纳

我们在内部项目上开发了您正在寻找的内容。 如果有足够的需要,我们正在考虑将其公之于众。 请查看此博客以获取更多详细信息: http//precisionsoftwaredesign.com/blog.php

如果您有兴趣,请随时与我联系:contact@precisionsoftware.us

该库现在是SourceForge项目。 该页面位于:

http://www.SourceForge.net/p/naturaldate

程序集位于下载部分,Mercurial提供了源代码。

===============>>#2 票数:5

我没有,但有一个名为jchronic的Java端口。 如果没有别的,它可以为你自己提供一个很好的起点。 或许您可以使用像Octopus这样的半自动Java到C#翻译器来帮助翻译它。 (或者更好的东西,如果有人知道的话。)

好的,另一种可能的途径:你可以使用IronRuby的慢性代码吗?

===============>>#3 票数:5

存在慢性的.NET端口。 请参阅https://github.com/robertwilczynski/nChronic 我创建了一个带有一些改进和错误修复的分支,在这里: https//github.com/dorony/nChronic (发送拉请求,作者仍然没有回复)。

===============>>#4 票数:4

@Blair Conrad - 好主意! 我试图让Chronic在IronRuby下运行但是在依赖项方面存在一些问题 - 我不知道它已经准备好了。

我在CodeplexDateTimeEnglishParser )上找到了一个试图做同样事情的项目。 它没有处理数年或时间,但它是一个良好的开端。 我已经为这个项目做了一点工作,并提供了一个补丁来更好地处理书面数字。

这是一个有趣的问题,并且确实帮助我更好地理解正则表达式,所以我想我会继续努力。

===============>>#5 票数:3

之前有一个类似的线程 ,它提供了一个链接到CodeProject上的库,似乎可以做你想要的: http//www.codeproject.com/KB/edit/dateparser.aspx但不幸的是,这个库似乎是用MFC所以你必须从中创建一个DLL,然后从你的.NET程序中调用它。

===============>>#6 票数:3

Palmsey,我最近也有同样的要求所以我继续写了一个简单的解析器。 它不是最好的代码,但它将处理如下事情:

“今天下午2点”“周二下午2点 - 2010年7月15日凌晨2点”“上一年凌晨2点 - Tommorow于14:30”“2010年7月18日下午2:45”

把它放在codeplex上,也许别人会发现它很有用。 看看: http//timestamper.codeplex.com/

===============>>#7 票数:3

我检查了几个框架,Python的ParseDateTime工作得最好。 它可以使用IronPython从.NET中使用。

如果有人对完整的示例项目感兴趣,请对答案进行评论,然后我会尝试创建一个。

编辑

根据要求,这是一个可以与库一起使用的简单项目:

http://www.assembla.com/code/relativedateparser/subversion/nodes

尝试以下用例,例如:

  • 2008年8月25日
  • 2008年8月25日
  • 8月25日下午5点
  • 8月25日下午5点
  • 下个星期六
  • 明天
  • 下周四下午4点
  • 下午4点
  • EOD
  • 明天点头
  • 星期二
  • 安永企业家奖
  • EOM
  • 在5分钟内
  • 从现在起5分钟
  • 现在5个小时前
  • 中午前2小时
  • 从明天起2天

===============>>#8 票数:2

我不知道一个,但它听起来像一个很酷的问题,所以这是我对它的打击(VB.NET):

Private Function ConvertDateTimeToStringRelativeToNow(ByVal d As DateTime) As String
    Dim diff As TimeSpan = DateTime.Now().Subtract(d)
    If diff.Duration.TotalMinutes < 1 Then Return "Now"

    Dim str As String
    If diff.Duration.TotalDays > 365 Then
        str = CInt(diff.Duration.TotalDays / 365).ToString() & " years"
    ElseIf diff.Duration.TotalDays > 30 Then
        str = CInt(diff.TotalDays / 30).ToString() & " months"
    ElseIf diff.Duration.TotalHours > 24 Then
        str = CInt(diff.Duration.TotalHours / 24) & " days"
    ElseIf diff.Duration.TotalMinutes > 60 Then
        str = CInt(diff.Duration.TotalMinutes / 60) & " minutes"
    Else
        str = CInt(diff.Duration.TotalMinutes).ToString() & " minutes"
    End If
    If str.StartsWith("1") Then str = str.SubString(0, str.Length - 1)
    If diff.TotalDays > 0 Then
        str &= " ago"
    Else
        str &= " from now"
    End If
    Return str
End Function

它实际上并不像已经存在的那么复杂,但我认为它可以正常工作。 可能是一个很好的扩展方法。

===============>>#9 票数:1

@ Burton:我认为他的意思是另一种方式,至少从链接页面上的例子来看:

  Chronic.parse('tomorrow')
    #=> Mon Aug 28 12:00:00 PDT 2006

  Chronic.parse('monday', :context => :past)
    #=> Mon Aug 21 12:00:00 PDT 2006

  Chronic.parse('this tuesday 5:00')
    #=> Tue Aug 29 17:00:00 PDT 2006

在我意识到这一点之前,我还以为我会抓住它! (虽然很好的实施)

  ask by palmsey translate from so

未解决问题?本站智能推荐:

6回复

日期(.NET)的自然语言解析器?

我希望能够让用户使用自然语言输入日期(包括重复日期)(例如“下周五”,“每个工作日”)。 与http://todoist.com/Help/timeInsert中的示例非常相似 我找到了这篇文章 ,但它有点老了,只提供了一个我不满意的解决方案 。 我以为我会复活这个问题并看到:那里有没
7回复

java的自然语言日期和时间解析器

我正在研究一个自然语言解析器,它用英语检查一个句子,并提取一些信息,如姓名,日期等。 例如:“ 让我们下周二下午5点在海滩见面。 ” 所以输出将是这样的:“ 让我们在海滩的1700小时在15/09/2009见面 ” 基本上,我想知道的是, JAVA是否有任何框架或库可用于执行这
5回复

在javascript中有日期/时间的自然语言解析器吗?

在javascript中有日期/时间的自然语言解析器吗?
3回复

ColdFusion中的日期/时间是否有自然语言解析器?

ColdFusion中的日期/时间是否有自然语言解析器 ?
1回复

用于ruby / rails的自然语言日期解析器

有人知道与Ruby中的Date.js类似的东西吗? 可以从类似“今天后两周”之类的日期对象中返回日期的对象。 Remember the Milk Web应用程序将此功能集成到了他们的系统中,并且非常易于使用。 我会使用Date.js库本身,但是因为它在客户端,所以有其局限性。 如果用
1回复

是否有适合Java的部分功能的现代自然语言日期解析器? [关闭]

我有两个问题,我想知道我是否可以一次解决它们。 我正在尝试用Java(好吧,Scala)进行自然语言日期解析,并且一直在使用JChronic,这是优秀的慢性RubyGem的端口。 但有两个问题: JChronic使用java.util.Calendar而不是Joda-Time,
3回复

自然语言解析约会?

我正在寻找一个Java库来帮助解析用户输入的文本,该文本代表日历应用程序的“约会”。 例如: 周二11:30与迈克共进午餐 要么 星期五下午5点欢乐时光 我找到了一些很有前途的线索,比如https://github.com/samtingleff/jchronic和ht
3回复

ruby / rails中的自然语言日期?

我需要显示自然日期 “几秒钟前” “21分钟前” 铁轨内置了什么东西? 或者可能是第三方? 这并不难实现,但我不想发明轮子。
3回复

自然语言时间解析器

我正在尝试将包含(自然语言)时间的字符串解析为hh:mm时间对象? 例如: 我已经研究过Chronic for Ruby和Natty for Java(以及其他一些库),但两者似乎都专注于解析日期。 像“十点五分”这样的字符串也没有正确解析。 有谁知道一个适合我需求的图书馆?
1回复

.NET的自然语言处理工具包

您能给我一些用于.NET中自然语言处理的工具包和库吗? 是否有类似UIMA的.NET工具?