in reply to *SOLVED* High-speed Date Formatting
If can live with its limitations(1), you could try something like this:
#! perl -slw use strict; use constant MONTHS => { qw[ Jan 0 Feb 31 Mar 59 Apr 90 May 120 Jun 151 Jul 181 Aug 212 Sep 242 Oct 272 Nov 303 Dec 334 ] }; sub str2epoch { my( $d, $m, $y, $H, $M, $S ) = $_[0] =~ m[^.... (\d\d) (...) (\d\d\d\d) (\d\d):(\d\d):(\d\d)] or die "Bad format $_[0]"; my $leaps = int( ($y - 1970) / 4 + 0.5 ); (((($y-1970)*365 +$leaps+MONTHS->{$m}+($d-1))*24 +$H)*60 +$M)*60 + +$S; } my $date = 'Fri, 01 Mar 2013 01:21:14 +0000';; print str2epoch( $date ); print scalar localtime str2epoch( $date ); print scalar localtime str2epoch( 'Fri, 12 Jul 2013 01:20:34' );; __END__ C:\test\primes>..\str2epoch.pl 1362100874 Fri Mar 1 01:21:14 2013 Fri Jul 12 02:20:34 2013
And if you need a little more you might parse the numbers with unpack instead of the regex engine.
1 Limitations include:
- No leap seconds;
- No daylight savings;
- No timezones;
- Only works for another 87 years.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
In Section
Seekers of Perl Wisdom