For Programmers: Free Programming Magazines  


Home > Archive > PERL Modules > September 2004 > Handle multiple input date formats?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Handle multiple input date formats?
fishfry

2004-09-13, 8:56 am

I have a date input field and I want to be able to handle 3/22/04,
22-mar-04, March 22, 2004, etc. I looked through the Module List and
there are dozens of Date/Time routines but no way to figure out which,
if any, will do what I want.

Clues for me please?
Gunnar Hjalmarsson

2004-09-13, 8:56 am

fishfry wrote:
> I have a date input field and I want to be able to handle 3/22/04,
> 22-mar-04, March 22, 2004, etc. I looked through the Module List
> and there are dozens of Date/Time routines but no way to figure out
> which, if any, will do what I want.


No way? Of course there is. One way is to browse the descriptions at
http://search.cpan.org/.

> Clues for me please?


http://search.cpan.org/perldoc?Date%3A%3AParse

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
Gunnar Hjalmarsson

2004-09-15, 3:56 pm

fishfry wrote:
> I have a date input field and I want to be able to handle 3/22/04,
> 22-mar-04, March 22, 2004, etc. I looked through the Module List
> and there are dozens of Date/Time routines but no way to figure out
> which, if any, will do what I want.


No way? Of course there is. One way is to browse the descriptions at
http://search.cpan.org/.

> Clues for me please?


http://search.cpan.org/perldoc?Date%3A%3AParse

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
Jürgen Exner

2004-09-15, 9:22 pm

fishfry wrote:
> I have a date input field and I want to be able to handle 3/22/04,


Would this be the 22 of April in the year 2003 or the 22 of March in year
2004?

And you are lucky that there are no 22 months in the year. If you would have
used e.g. 05 instead in your example, then this would be 3rd of May 2004 in
most parts of the world.
And of course this doesn't even begin to address the complexity of any but
the Gregorian calender, e.g. the Hebrew calender, the Islamic calender, the
Japanese imperial calender, etc, etc. are left out.

If you allow a free form text field for date entry then the values you
receive will be useless.

> 22-mar-04, March 22, 2004, etc. I looked through the Module List and
> there are dozens of Date/Time routines but no way to figure out which,
> if any, will do what I want.
>
> Clues for me please?


Familiarize yourself with date formats that people actually use and you will
notice that an automatic "detection" ends up being an automated guess.

_YOU_ must define and enforce the format or people will enter dates in any
of dozens of ambiguous formats where no software or human can make a safe
call. You could just as well use a rand(), that's easier to do.

jue



Charles DeRykus

2004-09-16, 4:52 am

In article <BLOCKSPAMfishfry-EFAC67.03554711092004@netnews.comcast.net>,
fishfry <BLOCKSPAMfishfry@your-mailbox.com> wrote:
> I have a date input field and I want to be able to handle 3/22/04,
>22-mar-04, March 22, 2004, etc. I looked through the Module List and
>there are dozens of Date/Time routines but no way to figure out which,
>if any, will do what I want.
>


I agree with suggestions to enforce the format but you
may find Date::Manip useful for dealing with potential
variability.

For instance, if you specify "month day year", Date::Manip
handles several variants:

# perl -MDate::Manip -le 'print &ParseDate("3/22/04")'
2004032200:00:00

# perl -MDate::Manip -le 'print &ParseDate("March 22, 2004")'
2004032200:00:00

# perl -MDate::Manip -le 'print &ParseDate("mar-22-04")'
2004032200:00:00

perl -MDate::Manip -le 'print &ParseDate("03.22.04")'
2004032200:00:00

--
Charles DeRykus


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com