Bill, it appears to have to do with it pick the time not being populated, and
it picking up the date from yesterday.
I added some lines to test this theory. Try running the code below without an
argument, and then with an argument.
Tim
#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
my ($time, $month, $day, $year, $seconds, $minutes, $hours, $wday, $yday,
$isdst);
my $start_date = '11/30/2012';
print "$start_date \n";
($month, $day, $year) = split(/\//, $start_date);
#Added this to populate the time
if (defined($ARGV[0])) {
print "Populating the time\n";
$seconds = 30;
$minutes = 30;
$hours = 11;
}
print $time = timegm($seconds, $minutes, $hours, $day, $month-1, $year-1900);
print "\n";
($seconds, $minutes, $hours, $day, $month, $year, $wday, $yday, $isdst) =
localtime($time);
$month++;
$year = ($year+1900);
print "$month/$day/$year \n";
-----Original Message-----
From: "Bill Stephenson" <[email protected]>
Sent: Friday, January 18, 2013 3:13pm
To: "Perl Beginners" <[email protected]>
Subject: converting dates to epoch seconds and back
When converting DMYHMS to Epoch Seconds and back I get cheated out of a day.
Why?
Bill
--
#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
my ($time, $month, $day, $year, $seconds, $minutes, $hours, $wday, $yday,
$isdst);
my $start_date = '11/30/2012';
print "$start_date \n";
($month, $day, $year) = split(/\//, $start_date);
print $time = timegm($seconds, $minutes, $hours, $day, $month-1, $year-1900);
print "\n";
($seconds, $minutes, $hours, $day, $month, $year, $wday, $yday, $isdst) =
localtime($time);
$month++;
$year = ($year+1900);
print "$month/$day/$year \n";
# output:
# 11/30/2012
# 1354233600
# 11/29/2012
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/