in reply to Convert GMT timestamp to EST/EDT

Time::Local is ancient and included in the Perl core:

#!/usr/bin/perl -w use strict; use Time::Local 'timegm'; my $stamp = '20150619-17:30:43.616'; my @nn = $stamp =~ /([.][0-9]+|[0-9]{2})/g; my $f = pop @nn; # Fractional seconds my $cc = shift @nn; # Century my $yy = shift @nn; # Year $nn[0] -= 1; # Make month 0-based (ugh) unshift @nn, "$cc$yy"; # Put 4-digit year back in front. $ENV{TZ} = "US/Eastern"; @nn = localtime( timegm( reverse @nn ) ); $nn[4]++; # Make month 1-based (ugh) $nn[5] += 1900; # (ugh) $stamp = sprintf "%d%02d%02d-%02d:%02d:%02d%s", @nn[reverse 0..5], $f; print "$stamp\n"; __END__ 20150619-13:30:43.616

- tye        

Replies are listed 'Best First'.
Re^2: Convert GMT timestamp to EST/EDT (Time::Local + Time::Piece)
by Anonymous Monk on Jul 27, 2015 at 07:18 UTC
    :) Time::Piece in perls v5.9.5-v5.23.1
    ## @nn = localtime( timegm( reverse @nn ) ); ##$nn[4]++; # Make month 1-based (ugh) ##$nn[5] += 1900; # (ugh) ##$stamp = sprintf "%d%02d%02d-%02d:%02d:%02d%s", use Time::Piece qw/ localtime ; $stamp = localtime( timegm( reverse @nn ) )->strptime('%Y%m%d-%H:%M:% +S').$f;
      This only works if your local time zone happens to be EST/EDT.

        The title of the thread is "Convert GMT timestamp to EST/EDT." :P

      "The more you know!" *stars* --edit wow.. rough crowd.
Re^2: Convert GMT timestamp to EST/EDT (Time::Local)
by gtk (Acolyte) on Jul 27, 2015 at 06:11 UTC
    Wooooow.. Thanks a lot tye. It worked.