in reply to Re^3: formatting datetime with strftime
in thread formatting datetime with strftime

toolic, your hunch is most likely correct, I was using the %T format hoping to get HH:MM:SS. I've since substituted %H:%M:%S and although I don't get an error, I get a bizarre time... I don't think it's UTC or GMT... here's the code:
#!perl -w use POSIX qw(strftime); use Date::Calc qw(Mktime); $datetimestring = "4/5/13 16:09"; #split datetimestring into date & time ($date_raw, $time_raw) = split(/ /, $datetimestring); print "the date_raw is: $date_raw \n"; #split the date into MM DD YY ($m0_raw, $d0_raw, $y0_raw) = split(/\//, $date_raw); $m_raw = sprintf ("%02d", $m0_raw); print "the m_raw is: $m_raw \n"; $d_raw = sprintf ("%02d", $d0_raw); print "the d_raw is: $d_raw \n"; $y_raw = 2000 + $y0_raw; print "the y_raw is: $y_raw \n\n"; print "the time_raw is: $time_raw \n"; #split the time_raw into HH MM ($hh_raw, $mm_raw) = split(/:/, $time_raw); print "the hh_raw is: $hh_raw \n"; print "the mm_raw is: $mm_raw \n\n"; $s0_raw = 0; $ss_raw = sprintf ("%02d", $s0_raw); #load a Perl datetime variable using mktime $datetime1 = Mktime($y_raw,$m_raw,$d_raw, $hh_raw, $mm_raw, $ss_ra +w); print "the loaded datetime variable is: $datetime1 \n"; #format the datetime variable to match the require format MON dd yyyy +HH:MM:SS GMT $time2 = strftime('%b %d, %y %H:%M:%S', $m_raw, $d0_raw, $y_raw, $ +hh_raw, $mm_raw, $ss_raw); print "the formatted date time is: $time2 \n";
Here are the results I get:
the date_raw is: 4/5/13 the m_raw is: 04 the d_raw is: 05 the y_raw is: 2013 the time_raw is: 16:09 the hh_raw is: 16 the mm_raw is: 09 the loaded datetime variable is: 1365192540 the formatted date time is: Jan 07, 01 21:05:04

Replies are listed 'Best First'.
Re^5: formatting datetime with strftime
by poj (Abbot) on Jul 22, 2013 at 15:36 UTC

    The order of your arguments is wrong, it should be
    strftime(fmt, sec, min, hour, mday, mon, year)
    where mon begins at zero and year is since 1900.

    my $datetimestring = "5/4/13 16:09"; my ($month,$day,$year,$hour,$min) = split /\D/,$datetimestring; my $str = strftime("%b %d %Y %H:%M:%S", 0,$min,$hour,$day,$month-1,$y +ear+100);