πως μεταφράζουμε τις ώρες που βλεπουμε στα email headers?

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Jun 22 14:30:50 EEST 2006


On 2006-06-22 13:36, Nick Demou <ndemou at gmail.com> wrote:
> πως μεταφράζουμε τις ώρες που βλεπουμε στα email headers
> π.χ. τι ώρα ελλάδος είναι η:
>
> Thu, 22 Jun 2006 03:20:01 -0700 (PDT)

Ο πιο εύκολος τρόπος είναι να χρησιμοποιήσεις τα Date::XXX
modules, μετατρέποντας αυτά τα formats σε UNIX time_t τιμές:

    bash> cat -n foo.pl
       1  #!/usr/bin/perl -Tw
       2
       3  use strict;
       4
       5  use Date::Parse;
       6  use Date::Format;
       7  use Date::Language;
       8
       9  my $date = Date::Language->new('English');
      10  my $time = $date->str2time("Thu, 22 Jun 2006 03:20:01 -0700 (PDT)");
      11  unless (defined($time)) {
      12      die "Date::Parse::str2time failed";
      13  }
      14  print "$time\n";
    bash> ./foo.pl
    1150971601
    bash>

Επειδή το time_t είναι `timezone-free', μπορείς ύστερα να το
μετατρέψεις σε άλλο timezone σχετικά εύκολα, αλλάζοντας την τιμή
του TZ environment variable:

    bash> cat -n bar.pl 
       1  #!/usr/bin/perl -Tw
       2  
       3  require 5.004;
       4  
       5  use strict;
       6  
       7  use Date::Parse;
       8  use Date::Format;
       9  use Date::Language;
      10  
      11  my ($datestr, $date, $time);
      12  
      13  $datestr = "Thu, 22 Jun 2006 03:20:01 -0700 (PDT)";
      14  print "Original date = $datestr\n";
      15  
      16  $date = Date::Language->new('English');
      17  $time = $date->str2time($datestr);
      18  unless (defined($time)) {
      19      die "Date::Parse::str2time failed";
      20  }
      21  print "time_t = $time\n";
      22  
      23  {
      24      my $oldtimezone = $ENV{'TZ'};
      25      $ENV{'TZ'} = 'Europe/Athens';
      26  
      27      my $timestr = $date->time2str("%a %b %d %T %Z %Y", $time);
      28      unless (defined($timestr)) {
      29          die "Date::Format::time2str failed";
      30      }
      31      print "Date at Europe/Athens = $timestr\n";
      32  }
    bash> ./bar.pl 
    Original date = Thu, 22 Jun 2006 03:20:01 -0700 (PDT)
    time_t = 1150971601
    Date at Europe/Athens = Thu Jun 22 13:20:01 EEST 2006
    bash>




More information about the Linux-greek-users mailing list