Gem for date parsing (in the scale of the day, hours is not very important in my projects now). It support Russian and Ukrainian (in future) languages.

Table of possible phrase types to parse:

----------------------------------------------------------------------------------
по-русски                    |    по-украински                 | is implemented?
----------------------------------------------------------------------------------
вчера                        |                                 |       +
сегодня                      |                                 |       +
завтра                       |                                 |       +
два дня назад                |                                 |       +
три дня назад                |                                 |       +
(...) дней назад             |                                 |       +
2 дня назад                  |                                 |       +
3 дня назад                  |                                 |       +
5 дней назад                 |                                 |       +
через два дня                |                                 |       +
через три дня                |                                 |       +
через (...) дней             |                                 |       +
через 2 дня                  |                                 |       +
через 3 дня                  |                                 |       +
через 25 дней                |                                 |       +
в понедельник                |                                 |       +
во вторник и т.д.            |                                 |       +
в этот понедельник           |                                 |       +
в этот вторник и т.д.        |                                 |       +
пн (вт, ср, чт, пт, чб, вс)  |                                 |       +
в пн (во вт, в ср ...)       |                                 |
в следующий понедельник      |                                 |       +
в следующий вторник и т.д.   |                                 |       +
в след пн (в след.? вт)      |                                 |
в прошлый понедельник        |                                 |       +
в прошлый вторник и т.д.     |                                 |       +
в прошлый пн (вт, ср)        |                                 |
----------------------------------------------------------------------------------
через неделю                 |                                 |       +
через две недели и т.д.      |                                 |       +
через 2 недели               |                                 |       +
неделю назад                 |                                 |       +
две недели назад             |                                 |       +
2 недели назад               |                                 |       +
на следующей неделе          |                                 |
на след.(?) неделе           |                                 |
на прошлой неделе            |                                 |
----------------------------------------------------------------------------------
через месяц                  |                                 |       +
через два месяца             |                                 |       +
через 2 месяца               |                                 |       +
через мес                    |                                 |
через 2 мес                  |                                 |
месяц назад                  |                                 |       +
два месяца назад             |                                 |       +
пять месяцев назад           |                                 |       +
2 месяца назад               |                                 |       +
5 месяцев назад              |                                 |       +
----------------------------------------------------------------------------------
2 октября                    |                                 |       +
2 октября 2011               |                                 |       +
2 окт                        |                                 |       +
2 окт 2011                   |                                 |       +
17 июн, 2011                 |                                 |       +
----------------------------------------------------------------------------------
Date.parse (?):
----------------------------------------------------------------------------------
1.05.2011                    |                                 |       +
01.05.2011                   |                                 |       +
1-5-2011                     |                                 |       +
2011-5-1                     |                                 |       +
2011.5.1                     |                                 |       +
2011.1                       |                                 |  error raised

TODO:

  1. Write tests for sure in equality of numerical and literal days values and for sure in right date recognition
  2. Write YARD documentation
  3. Type error recognition ('черз' instead 'через') and fixing. (?!: vocabulary + Levenshtein distance). (and look at the http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance)
  4. Set start date + Timezone

USAGE:

puts Day::Ru 'через 2 месяца'  #=> Wed Sep 14 00:00:00 +0300 2011
puts Day::Ru 'завтра'          #=> Wed Jul 15 00:00:00 +0300 2011

# (For other examples see table at the top)