in reply to Re: date and time difference
in thread date and time difference

Oh, thanks a lot, it worked well after change the Nov to 11 as you recommended.

And thanks for your concern for using old version, but I can't not upgrade. It is not my authority.

Please I have another question more.

1. My time zone is KST(South Korea republic), but when I executed following command in my system(openbsd),I got GMT time.

In this case, Can I change the output GMT to KST?

Replies are listed 'Best First'.
Re^3: date and time difference
by haukex (Archbishop) on Jan 08, 2020 at 15:23 UTC
    My time zone is KST(South Korea republic), but when I executed following command in my system(openbsd),I got GMT time.

    Which command do you mean? If you mean Perl's output, gmtime will give you GMT, and localtime will give you whatever the current time zone setting on that machine is. If you want more advanced functionality than that, then you need to switch to DateTime.

    And thanks for your concern for using old version, but I can't not upgrade. It is not my authority.

    Similar advice as in Yes, even you can use CPAN applies.

      Thanks a lot for my missing comment.

      On openbsd system, typed the command:

      SD_OCC1# openssl x509 -in /etc/isakmpd/certs/local.crt -noout -dates (enter!)

      notBefore=Nov 23 22:31:12 2019 GMT

      notAfter=Mar 19 06:52:23 2020 GMT

      At thie point, I hope to change the GMT to current my contry time zone(KST).

      Thanks in advance,

      And followings are code changed by your recommendation.

      my %MONTH_NAMES = ( "Jan" => '01', "Feb"=> '02', "Mar" => '03', "Apr +"=> '04',"May" => '05', "Jun" => '06', "Jul" => '07', "Aug" => '08', + "Sep" => '09', "Oct" => '10', "Nov" => '11', "Dec" => '12' );
      if(m/notBefore/) { chomp; ($notB1, $notB2) = split('=', $_); $notB2 =~ tr/:/ /; my($mon,$mday,$hour,$minute,$sec,$year)=split(/ /,$notB2); #print $mon, $mday, $hour, $minute, $sec, $year; $time_1 = timelocal($sec,$minute,$hour,$mday,$MONTH_NAMES{$mon},$ye +ar); print $MONTH_NAMES{$mon}; }

      2020-01-09 Athanasius fixed long code line.

        And followings are code changed by your recommendation.

        Not really, you're still using timelocal instead of timegm_modern (and the month numbers are still off by one).

        As I said, for best results, use DateTime. For the other solutions, if your local system isn't set to the right time zone, you could try forcing it via local $ENV{TZ}='Asia/Seoul';, but that's not guaranteed to work and may not be portable.

        use warnings; use strict; my $date = "Nov 23 22:31:12 2019 GMT"; print "Input date: $date\n"; { use Time::Local qw/timegm_modern/; my %MONTH_NAMES = ( Jan=>0, Feb=>1, Mar=>2, Apr=>3, May=>4, Jun=>5, Jul=>6, Aug=>7, Sep=>8, Oct=>9, Nov=>10, Dec=>11 ); my ($mon,$mday,$hour,$minute,$sec,$year) = split /\s+|:/, $date; my $tm = timegm_modern($sec,$minute,$hour,$mday, $MONTH_NAMES{$mon},$year); print "timegm+gmtime: ", gmtime($tm)." GMT\n"; print "timegm+localtime: ", localtime($tm)." Local\n"; } # - OR - { use Time::Piece; my $tm = Time::Piece->strptime($date, '%b %d %H:%M:%S %Y %Z'); print "Time::Piece: ", $tm->strftime, "\n"; print "Time::Piece+localtime: ", localtime($tm->epoch)." Local\n"; } # - OR - { use DateTime; use DateTime::Format::Strptime; my $strp = DateTime::Format::Strptime->new( pattern => '%b %d %H:%M:%S %Y %Z', on_error => 'croak'); my $dt = $strp->parse_datetime($date); print "DateTime: ",$dt->strftime("%Y-%m-%dT%H:%M:%S%z (%Z)"),"\n"; $dt->set_time_zone('Asia/Seoul'); print "DateTime: ",$dt->strftime("%Y-%m-%dT%H:%M:%S%z (%Z)"),"\n"; }
Re^3: date and time difference
by ikegami (Patriarch) on Jan 08, 2020 at 16:51 UTC

    Nov is 10, actually. The month number is 0-based (for consistency with localtime).