πως μεταφράζουμε τις ώρες που βλεπουμε στα 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