• Stars
    star
    136
  • Rank 267,670 (Top 6 %)
  • Language
    C
  • License
    MIT License
  • Created over 12 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Natural Language Date Parser Using Lex/Yacc/C

Moment

UPDATE: Moved to its own Repo to be used with multiple languages at MomentLib

Natural Language Date/Time Parser Using Lex/Yacc/C

Moment handles simple and complex expressions. Because it's written in C, it can easily be transferred to many other languages.

To use it:
Add the 4 files to your project.
Include "TimeParser.h"
Then call the method parseDateTimeString(StringToParse), which returns a time_t type.  
You can then turn it into struct tm * with the localtime function. 

Here is what it looks like in objective c:
NSString *when = @"2 days from now at 3pm";
char *whenstr = (char *)[when UTF8String];
time_t finalTime = parseDateTimeString(whenstr);
str_time= localtime(&finalTime);

To get it to work in x-code all you have to do is add the files. X code automatically generates the C files for you.

Example Expressions:

Simple

  • thursday
  • november
  • friday 13:00
  • mon 2:35
  • 4pm
  • 6 in the morning
  • friday 1pm
  • sat 7 in the evening
  • yesterday
  • today
  • tomorrow
  • this tuesday
  • next month
  • this morning
  • last night
  • this second
  • yesterday at 4:00
  • last friday at 20:00
  • last week tuesday
  • tomorrow at 6:45pm
  • afternoon yesterday
  • thursday last week

Complex

  • 3 years ago
  • 5 months before now
  • 7 hours ago
  • 7 days from now
  • 1 week hence
  • in 3 hours
  • 1 year ago tomorrow
  • 3 months ago saturday at 5:00 pm
  • 7 hours before tomorrow at noon
  • 3rd wednesday in november
  • 3rd month next year
  • 3rd thursday this september
  • 4th day last week

Specific Dates

  • January 5
  • dec 25
  • may 27th
  • October 2006
  • jan 3 2010
  • March 14, 2004
  • March 14th, 2004
  • 3 jan 2000
  • 17 april 85
  • 5/27/1979
  • 27/5/1979
  • 1979-05-27
  • Friday
  • 5
  • 4:00
  • 17:00
  • 0800