아래는 localtime이 동작이 잘되지 않아서 GMT와 같이 나오는 경우를 처리하기 위한 코드도 포함됨 (잘되면 사실상 불필요)


use Time::Local;

sub get_datestr {
    my ($flag) = @_;
    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime;
    my $g_time = timegm($sec, $min, $hour, $mday, $mon, $year);

    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
    my $l_time = timelocal($sec, $min, $hour, $mday, $mon, $year);

    if( $g_time == $l_time ) {
        # GMT+9로 변경
        $l_time += 60 * 60 * 9;
        ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($l_time);
    }

    my $date_str = sprintf("%4d%02d%02d",$year+1900,$mon+1,$mday);
    my $time_str = sprintf("%02d%02d%02d",$hour,$min,$sec);

    if( not defined $flag ){
        return $date_str.'_'.$time_str;
    }
    else {
        return $date_str;
    }
}

+ Recent posts