javascript - 给定一个特定日期,是否有一种方法可以在自由文本文档中搜索该日期,而不知道该日期以哪种格式编写?

标签 javascript ruby date full-text-search pattern-matching

假设我有一个特定的日期,例如 2013 年 1 月 10 日

我希望能够搜索文本或 html 文档以查看它是否包含对该日期的引用。我想考虑多种格式中的日期,例如:

1/10/2013  
01/10/13  
2013-01-10
10-Jan-2013  
January 10, 2013  
Jan 10, 2013

...都应该生成 2013 年 1 月 10 日 的 (+) 匹配结果。

我认识到交换日月顺序可能会出现问题,但在这种情况下我愿意接受误报结果,这意味着:

01-10-2013
10-01-2013

...就我而言,2013 年 1 月 10 日 都是可以接受的。

是否有一种用任何语言实现的既定算法可以执行这种广义但不平凡的搜索?我更喜欢 Ruby 或 JavaScript,但我会对任何经过深思熟虑的示例感兴趣。 附录 #1

我看到这段代码:

def validate_date(date_str)
  valid_formats = ["%m/%d/%Y", "%m/%d/%Y %I:%M %P"] 
  #see http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime for more

  valid_formats.each do |format|
    valid = Time.strptime(date_str, format) rescue false

    return true if valid
  end

  return false
end

here .

...这将是处理日期数字表示的好方法。这使得月份名称下落不明。由于 1、01、Jan 和 January 都代表一年中的第一个月,我想知道大量的排列是否在其他地方得到了很好的处理。

最佳答案

我不知道任何现有的解决方案,但编写自己的解决方案并不复杂。创建一个您想要搜索的日期格式的数组,然后简单地迭代这些格式,格式化您的日期并搜索您的文档:

require 'date'

formats = ["%-m/%e/%Y",
           "%m/%d/%Y",
           "%Y-%m-%d",
           "%d-%b-%Y",
           "%B %d, %Y",
           "%b %d, %Y"]

d = Date.new(2013, 1, 10)

formats.each do |format|
  search_string = d.strftime(format)
  # Do your search for `search_string`
end

更新:一种更复杂、更有效的方法是将搜索字符串转换为正则表达式:

require 'date'

formats = ["%-m/%e/%Y",
           "%m/%d/%Y",
           "%Y-%m-%d",
           "%d-%b-%Y",
           "%B %d, %Y",
           "%b %d, %Y"]

d = Date.new(2013, 1, 10)

regex = Regexp.union(formats.map{|f| Regexp.new(Regexp.quote(d.strftime(f)))})
# Search document for regex

关于javascript - 给定一个特定日期,是否有一种方法可以在自由文本文档中搜索该日期,而不知道该日期以哪种格式编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028708/

相关文章:

javascript - 为什么 Javascript 转换时间不同?

javascript - d3 防止拖拽特定元素

javascript - jquery .ajax 总是返回错误-数据被添加到数据库

javascript - D3.JS SVG 圆圈中的数据驱动颜色

javascript - 如何在共享 View 中禁用单个页面的 Turbolinks?

r - 如何在R中使用strptime()保持午夜(00:00h)?

javascript - jquery sortable 除了这个

ruby-on-rails - bundle 有什么意义?

ruby-on-rails - 模型方法取决于 current_user in rails

java - 在 Java 中获取当前时区的日期