#!/usr/bin/perl use strict; use warnings; use DateTime::Format::Natural; my $parser = DateTime::Format::Natural->new( time_zone => 'America/New_York' ); my @date_keywords; test_date_keywords(); exit; sub test_date_keywords { load_date_keywords(); for (my $i = 0; $i <= $#date_keywords; $i++) { my $dt = $parser->parse_datetime($date_keywords[$i]); my @dt = $parser->parse_datetime_duration($date_keywords[$i]); if (!$parser->success) { warn $parser->error; exit; } if (@dt) { for (@dt) { print $_->strftime('%Y-%m-%d %H:%M:%S'), qq( - "$date_keywords[$i]"\n); } } else { print $dt->strftime('%Y-%m-%d %H:%M:%S'), qq( - "$date_keywords[$i]"\n); } } return; } sub load_date_keywords { @date_keywords = ('06:56:06 am','06:56:06 pm','1:00 on sun','1:00 sun','10 days ago','10 hours ago','10 minutes ago','10 months ago','10 seconds ago','10 weeks ago','10 years ago','100th day','12:14 AM','12:14 PM','1am on sun','1am sun','1pm on sun','1pm sun','2nd monday','4:20pm','4pm today','4pm tomorrow','4pm yesterday','4pm','4th february','5:30am','5am today','5am tomorrow','5am yesterday','5am','6 am','6:00 today','6:00 tomorrow','6:00 yesterday','8 pm','afternoon','evening','friday 03:00 am','friday 03:00 pm','in 5 days','in 5 hours','in 5 minutes','in 5 months','in 5 seconds','in 5 weeks','in 5 years','last day','last friday','last hour','last june','last minute','last month','last quarter','last second','last week wednesday','last week','last year','midnight','mon 2:35','morning','next day','next friday','next hour','next minute','next month','next october','next quarter','next second','next week wednesday','next week','next year','noon','november 3rd','now','saturday','sunday 11:00','sunday at 05:00 am','sunday at 05:00 pm','this afternoon','this day','this evening','this friday','this hour','this minute','this month','this morning','this quarter','this second','this week wednesday','this week','this year','thursday afternoon','thursday evening','thursday morning','today 02:32','today 2:32am','today 2:32pm','today afternoon','today at 2:32 AM','today at 2:32 PM','today at 4:00','today at 6:45am','today at 6:45pm','today at midnight','today at noon','today evening','today morning','today','tomorrow 02:32','tomorrow 2:32am','tomorrow 2:32pm','tomorrow afternoon','tomorrow at 2:32 AM','tomorrow at 2:32 PM','tomorrow at 4:00','tomorrow at 6:45am','tomorrow at 6:45pm','tomorrow at midnight','tomorrow at noon','tomorrow evening','tomorrow morning','tomorrow','tuesday last week','tuesday next week','tuesday this week','wednesday 02:30am','wednesday 02:30pm','wednesday 14:30','wednesday at 02:30am','wednesday at 02:30pm','wednesday at 14:30','yesterday 02:32','yesterday 2:32am','yesterday 2:32pm','yesterday afternoon','yesterday at 2:32 AM','yesterday at 2:32 PM','yesterday at 4:00','yesterday at 6:45am','yesterday at 6:45pm','yesterday at midnight','yesterday at noon','yesterday evening','yesterday morning','yesterday','1:00 last friday','1:00 next friday','1:00 this friday','10 hours before midnight','10 hours before noon','10 minutes before midnight','10 minutes before noon','10 seconds before midnight','10 seconds before noon','11 january 2 years ago','11 january last year','11 january next year','11 january this year','12th day last month','12th day next month','12th day this month','1am last friday','1am next friday','1am this friday','1pm last friday','1pm next friday','1pm this friday','1st day last year','1st day next year','1st day this year','1st tuesday last november','1st tuesday next november','1st tuesday this november','2 days before now','2 hours before now','2 minutes before now','2 months before now','2 seconds before now','2 weeks before now','2 years before now','2nd friday in august','3 hours after today','3 hours after tomorrow','3 hours after yesterday','3 minutes after today','3 minutes after tomorrow','3 minutes after yesterday','3 seconds after today','3 seconds after tomorrow','3 seconds after yesterday','3rd wednesday in november','4 days from now','4 hours from now','4 in the afternoon','4 minutes from now','4 months from now','4 seconds from now','4 weeks from now','4 years from now','4th day last week','5 am last monday','5 am next monday','5 am this monday','5 hours after midnight','5 hours after noon','5 minutes after midnight','5 minutes after noon','5 pm last monday','5 pm next monday','5 pm this monday','5 seconds after midnight','5 seconds after noon','6 hours before today','6 hours before tomorrow','6 hours before yesterday','6 in the morning','6 minutes before today','6 minutes before tomorrow','6 minutes before yesterday','6 mondays from now','6 seconds before today','6 seconds before tomorrow','6 seconds before yesterday','6th day last week','6th day next week','6th day this week','8th month last year','8th month next year','8th month this year','9 in the evening','beginning of last month','end of last month','final thursday in april','fri 3 months ago at 5am','last friday at 20:00','last sunday at 21:45','last thursday in april','last tuesday 11 am','last tuesday 11 pm','last wednesday 7am','last wednesday 7pm','midnight last friday','midnight next friday','midnight this friday','monday 4 in the afternoon','monday 6 in the morning','monday 9 in the evening','monday last week','next friday at 20:00','next tuesday 11 am','next tuesday 11 pm','next wednesday 7am','next wednesday 7pm','noon last friday','noon next friday','noon this friday','saturday 3 months ago at 17:00','saturday 3 months ago at 5:00am','saturday 3 months ago at 5:00pm','this friday at 20:00','this tuesday 11 am','this tuesday 11 pm','this wednesday 7am','this wednesday 7pm','today 5 days ago','today 5 hours ago','today 5 minutes ago','today 5 months ago','today 5 seconds ago','today 5 weeks ago','today 5 years ago','today at 13:00','tomorrow 1 year ago','tomorrow 3 days ago','tomorrow 3 hours ago','tomorrow 3 minutes ago','tomorrow 3 months ago','tomorrow 3 seconds ago','tomorrow 3 weeks ago','tomorrow 3 years ago','tomorrow at 13','wednesday 1 month ago at 8pm','yesterday 7 days ago','yesterday 7 hours ago','yesterday 7 minutes ago','yesterday 7 months ago','yesterday 7 seconds ago','yesterday 7 weeks ago','yesterday 7 years ago','yesterday at 13:00','1 April to 31 August','1/3 to 2/3','100th day to 200th','10th to 20th day','16:00 nov 6 to 17:00','1999-12-31 to tomorrow','2/3 to in 1 week','2009-03-10 9:00 to 11:00','21:00 to 22:00 mar 3','21:00 to mar 3 22:00','26 oct 10:00 am to 11:00 am','3/3 21:00 to in 5 days','30th to 31st dec','30th to dec 31st','6am dec 5 to 7am','first day of 2009 to last day of 2009','first day of may to last day of may','first to last day of 2008','first to last day of september','for 4 days','for 4 hours','for 4 minutes','for 4 months','for 4 seconds','for 4 weeks','for 4 years','jan 1 to 2','may 2nd to 5th','monday to friday','now to 2010-01-01','-5min','+2d','1/3 16:00','1/3','11 january','17:00','18 oct 17:00','18 oct 5 am','18 oct 5 pm','18 oct 5am','18 oct 5pm','19:00 jul 1','2005','2010 october 28','2011-jan-04','20111018000000','2016-06-19T12:12:11','27/5/1979','3 jan 2000','3/1 16:00','3/1','3:20:00','4:00','7 am jul 1','7 pm jul 1','7am jul 1','7pm jul 1','dec 25','feb 28 3 am','feb 28 3 pm','feb 28 3:00','feb 28 3am','feb 28 3pm','february 14, 2004','jan 24, 2011 12:00','jan 24, 2011 12am','jan 24, 2011 12pm','jan 3 2010','january 11','march 1st 2009','march','may 27th','October 2006','1 hr ago','1 min ago','1 sec ago','1 yr ago','10 secs ago','3 hrs ago','5 mins ago','7 yrs ago','final thurs in sep','thur','thurs','tues this week','tues','yesterday @ noon'); return; }