I haven't been able to find anything by googling... Does anyone know
of any libraries that will split up date ranges? We've got a project
where "Date Of Attendance" is moving from a single type in character
field to an automatically built field based on a DateBegin date field
and a DateEnd date field. Some examples of what I'd like ideally...

Given: July 19-22, 2009
Return: 7/19/2009 and 7/22/2009

Given: July 19th and 20th
Return: 7/19/2009 and 7/20/2009 (we can safely assume current year for
this project)

Given: Sept 19, 2009 - Sept 22, 2009
Return: 9/19/2009 and 9/22/2009

Given: July 19th, 2009
Return: 7/19/2009 and 7/19/2009

Given: 7/19/2009
Return: 7/19/2009 and 7/19/2009

I could probably hack something together that would work most of the
time... but why reinvent the wheel if some poor shlub has already done
it.

If such a thing doesn't exist... then I'm considering an algorithm
like such... (and advice... yays and nays are appreciated)

Replace the names (and variations thereof) of the months with their
numeric equivilants followed by a comma. So the above would become...

7, 19-22, 2009
7, 19th and 20th
9, 19, 2009 - 9, 22, 2009
7, 19th, 2009
7/19/2009

Then replace all the th and nd and st with nothing... replace all the
ands with a dash... and eliminate spaces... and change / to ,
Giving...

7,19-22,2009
7,19-20
9,19,2009-9,22,2009
7,19,2009
7,19,2009

Then explode on commas. If you have two elements populate the third
with the current year. (This "fixes" 7,19-20 to 7,19-20,2009). Not a
given example, but it would also fix 7/19 to 7,19,2009.

When you have three elements then you have a "valid" date. Loop over
each element and populate begin and end, if you find a dash in the
current element then split on the dash and populate as needed. Yes
this would allow 7-8,19-20,2009 to create 7/19/2009 and 8/20/2009 but
I think its as safe as any assumption that "regular people" wouldn't
enter that as a date range.

If you have more than three elements then split on the dash and as
long as you have have only two elements then consider each item by
itself.

If it's not handled by the above rules then don't split it up.

Thanks in advance.

Matt

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to