Perl: the Markov chain saw PerlMonks

### Re: Split date range into 3 equal parts

by TJPride (Pilgrim)
 on Dec 08, 2011 at 14:25 UTC ( #942442=note: print w/replies, xml ) Need Help??

in reply to Split date range into 3 equal parts

Using a slightly more lengthy method integrating a module that comes standard with Perl:

```use Time::Local;
use strict;
use warnings;

my (\$from, \$to, \$range);

\$from = '2010-06-01';
\$to = '2011-01-01';

if (!(\$range = dateRange(\$from, \$to, 3))) {
print "Could not calculate.\n";
}
else {
print "@\$range";
}

sub dateRange {
my (\$fd, \$td, \$n) = @_;
my (@range);

\$range[0] = \$fd;
\$range[\$n] = \$td;

\$fd = [split /-/, \$fd];
\$td = [split /-/, \$td];

### Calculate timestamps from given dates
### Croaks on bad date, so have to eval just in case
eval {
### Make sure to use timestamp from middle of day
### to eliminate potential problems with Daylight
### Savings or day rounding
\$fd = timelocal(undef, undef, 12,
\$fd->[2], \$fd->[1]-1, \$fd->[0]);
\$td = timelocal(undef, undef, 12,
\$td->[2], \$td->[1]-1, \$td->[0]);
};
return if \$@;

### Calculate intermediate timestamps
### Reverse from timestamps back to dates
for (1..(\$n-1)) {
@_ = localtime(\$fd + (\$td - \$fd) / \$n * \$_);
\$range[\$_] = sprintf('%04d-%02d-%02d',
\$_[5] + 1900, \$_[4] + 1, \$_[3]);
}

return \@range;
}

Create A New User
Node Status?
node history
Node Type: note [id://942442]
help
Chatterbox?
 [ambrus]: Mind you, LaTeX is currently still useful for writing math paper or snippet content without styling in such a way that the [ambrus]: formatting conventions of a journal or website can be quickly applied to it, and MS Office and LibreOffice has not quite solved this (although it's better for this than it used to be), [ambrus]: which is sort of a drawback compared to the ages of typewritten manuscripts representing content only to which the typesetter applies formatting, but that process required much more manual labor. [ambrus]: If you want to typeset a manuscript, you can still do much less work then in the manual typesetting ages and get good formatting. [ambrus]: All with only cheap modern computers and software. [ambrus]: Something you can have at home and your corner print shop, without a whole printing press's worth of equipment.

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (9)
As of 2017-09-26 11:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
During the recent solar eclipse, I:

Results (293 votes). Check out past polls.

Notices?