in reply to Time::Piece epoch parsing
I ran this code myself and in my time zone, I get the following result:
What I don't understand is why Time::Piece doesn't know that currently Daylight Savings time is in effect? Right now, GMT is only 7 hours ahead of us instead of 8. I am on Windows and my clock in taskbar shows the right time (PSDT).use strict; use warnings; use Time::Piece; my $x = '1415998800'; my $t = Time::Piece->new(); print Time::Piece->VERSION, "\n"; $t = $t->strptime( $x, '%s' ); print "Input $x\n"; print "Output ".$t->epoch(), "\n"; print $t, "\n"; print $t->strftime, "\n"; print "daylight savings flag is:",$t->daylight_savings, "\n"; __END__ 1.30 Input 1415998800 <- interpreted as a local time Output 1416027600 <- 8 hours ahead of input Fri Nov 14 21:00:00 2014 Fri, 14 Nov 2014 21:00:00 Pacific Standard Time daylight savings flag is:0
Update: I found out that if you call strptime() as a Class method, instead of as an object method, GMT is assumed. Otherwise the object's timezone is used, i.e. changing:
produces:$t = $t->strptime( $x, '%s' ); ## to: $t = Time::Piece->strptime( $x, '%s' );
1.30 Input 1415998800 Output 1415998800 Fri Nov 14 21:00:00 2014 Fri, 14 Nov 2014 21:00:00 UTC daylight savings flag is:0
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Time::Piece epoch parsing
by vsespb (Chaplain) on Jul 03, 2016 at 23:56 UTC | |
by Marshall (Canon) on Jul 04, 2016 at 01:10 UTC |