in reply to Re^3: How can I convert epoch seconds to date format
in thread How can I convert epoch seconds to date format

I am using the following code to do the timezone conversion. when i run on cmd line I get the expected results. But when I am pushing it to database I get the dates after 6 days stored.
i/p 31: req time is 2006-05-17 12:00:00 o/p should be: 431: date 1 is 2006-05-17 13:00:00 but the final value I get is 2006-05-23 14:00:00
This is the code I am using:
$req_time = got value from db; ($date,$time) = split(/ /, $req_time); ($year,$month,$day) = split(/-/, $date); ($hour,$min,$sec) = split(/:/, $time); $req_date = timelocal($sec, $min, $hour, $day, --$month, $year); $rtime = $req_date + 1*60*60; my $date1 = strftime '%Y-%m-%d %H:%M:%S', localtime $rtime;
Please let me know if anything is wrong with this....

Replies are listed 'Best First'.
Re^5: How can I convert epoch seconds to date format
by davorg (Chancellor) on May 11, 2006 at 14:34 UTC

    I'm not entirely sure what you're trying to achieve here, but your code seems to work as expected.

    #!/usr/bin/perl use strict; use warnings; use Time::Local; use POSIX 'strftime'; my $req_time = '2006-05-17 12:00:00'; print $req_time, "\n"; my ($date,$time) = split(/ /, $req_time); my ($year,$month,$day) = split(/-/, $date); my ($hour,$min,$sec) = split(/:/, $time); my $req_date = timelocal($sec, $min, $hour, $day, --$month, $year); my $rtime = $req_date + 1*60*60; my $date1 = strftime '%Y-%m-%d %H:%M:%S', localtime $rtime; print $date1, "\n";

    The output I get is:

    2006-05-17 12:00:00 2006-05-17 13:00:00

    Are you sure that the date is correct as you are pulling it out of the database?

    Also, if you're converting between a local timezone and GMT then the easiest way is by using timelocal and gmtime (or timegm and localtime if you're going the other way).

    --
    <http://dave.org.uk>

    "The first rule of Perl club is you do not talk about Perl club."
    -- Chip Salzenberg