Date: Wed, 29 Oct 2014 19:34:59 -0400 From: Dan Langille <dan@langille.org> To: "B. Estrade" <estrabd@gmail.com> Cc: freebsd-hackers@freebsd.org Subject: Re: perl isvaliddate function Message-ID: <310ADD44-3897-44F6-8D82-49AD66011FFA@langille.org> In-Reply-To: <CALSf6fS7-x0UL%2B4g3R9V412cL532uagBd_JVHLgDp8ZQOWWrJg@mail.gmail.com> References: <4EA9EE9C-5049-4C50-B361-07F58FA19896@langille.org> <CALSf6fQ%2BiaXrz9bCe7mZEz8K%2BUsbG5jdgibueNK_dyhMUY2xdg@mail.gmail.com> <E7A7A52F-A54E-4D6D-BC2B-D349E228FCA4@langille.org> <CALSf6fS7-x0UL%2B4g3R9V412cL532uagBd_JVHLgDp8ZQOWWrJg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Thank you. This is now in use at http://dev.freshports.org and will move to production later. On Oct 27, 2014, at 9:12 AM, B. Estrade <estrabd@gmail.com> wrote: > use POSIX qw/strftime/; > > sub IsValidDate($) { > my $string = shift; > my ($year, $mon, $mday) = split /-/, $string; > my $test = strftime("%Y-%m-%d", 0, 0, 0, $mday, $mon - 1, $year - 1900); > return ($test eq $string) ? $string : undef; > } > > my $a = '2014-11-30 unless *coin ports remain unfixed'; > > if (IsValidDate($a)) { > print "'$a' is a valid date\n"; > } else { > print "'$a' is NOT a valid date\n"; > } > > my $b = '2014-02-30'; > > if (IsValidDate($b)) { > print "'$b' is a valid date\n"; > } else { > print "'$b' is NOT a valid date\n"; > } > > my $c = '2014-02-28'; > > if (IsValidDate($c)) { > print "'$c' is a valid date\n"; > } else { > print "'$c' is NOT a valid date\n"; > } > > > On Sat, Oct 25, 2014 at 2:50 PM, Dan Langille <dan@langille.org> wrote: > On Oct 25, 2014, at 2:21 PM, B. Estrade <estrabd@gmail.com> wrote: > > > Looks fine to just get it working. If you wanted to be more efficient, I believe there is a way to use the core POSIX::strfmtime in a way that would verify that the date you start with is the same date as the one returned after the format. This core function is also very useful for date addition and subtraction. > > > > I don't have time at this moment to create a proof of concept, but if you're interested let me know and I will when I have a minute. > > Yes, please, when you have time, please try that proof for me. I would appreciate that. > > FYI: I believe all dates within the ports tree must be YYYY-MM-DD so using something like that would be useful. > > Comparing the starting date to the supplied date is good too, to catch edge cases like the first example. > > — > Dan Langille > > — Dan Langille
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?310ADD44-3897-44F6-8D82-49AD66011FFA>
