Bill Stephenson wrote:
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
You are using GMT for one conversion and local time for the other. Best
to use GMT for both conversions:
$ perl -le'
use strict;
use warnings;
use Time::Local;
my ( $time, $month, $day, $year, $seconds, $minutes, $hours );
my $start_date = q[11/30/2012];
print $start_date;
( $month, $day, $year ) = split /\//, $start_date;
print $time = timegm( $seconds, $minutes, $hours, $day, $month - 1,
$year - 1900 );
( $seconds, $minutes, $hours, $day, $month, $year ) = gmtime $time;
$month++;
$year += 1900;
print "$month/$day/$year";
'
11/30/2012
1354233600
11/30/2012
John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction. -- Albert Einstein
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/