use POSIX 'strftime'; my $timezone = 'CST6CDT'; # EST5EDT MST7MDT PST8PDT my $date = do { local $ENV{TZ} = $timezone; strftime( '%y %m %A %I %M %S %p', localtime ); }; my($year,$month,$day,$hour,$mins,$secs,$ampm) = split( ' ', $date );