Re: Split up Date Range

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 01 July 2009 16:25:29 Matt Neimeyer wrote:
> 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

Wow, first question is, why accept such a variety of inputs? Can't you force a 
particular standard for people that allows them to enter a range?

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux