Codebase list libtimedate-perl / 9651753
[svn-upgrade] Integrating new upstream version, libtimedate-perl (1.1900) Jonathan Yu 14 years ago
29 changed file(s) with 793 addition(s) and 77 deletion(s). Raw diff Collapse all Expand all
0 1.19 -- Fri Sep 25 13:59:41 CDT 2009
1
2 * Replace Date::Language::Hungarian with version from CPAN by Lee Goddard
3
4 1.18 -- Thu Sep 24 17:43:28 CDT 2009
5
6 * RT#49963 Skip pre 1970 date tests on Win32
7 * Added Date::Language::Hungarian (Konrad Lorinczi)
8
9 1.17 -- Sat Sep 19 10:56:12 CDT 2009
10
11 Bugfixes
12 * RT#45067: Date::Format with %z gives wrong results for half-hour timezones (Ernesto Hernández-Novich)
13 * RT#48164: Date::Parse unable to set seconds correctly
14 * RT#17396: Parse error for french date with 'mars' (march) as month
15
16 Documentation
17 * Fixed documentation for %e in Date::Format
18 * Update documentation to remove Date::Format->language
19
20 Enhancements
21 * Add support for dates like Jul-13-1999 (Brett Warden)
22 * Added Icelandic language (Tomas Edwardsson)
23 * Added Romanian language (Doru Petrescu)
24 * Added Russian language (Denis Poznyakov & Danil Pismenny)
25 * Added Turkish language (Burak Gursoy)
26 * Added Spanish language (Adrian Mugnolo)
27 * Added Chinese language (Kang-min Liu)
28 * Support parsing dates like 2002-02-26-10:37:21.141 as used by lpd
29 * Support Z timezone when only the time is specified
30 * Added METDST to Time::Zone
31 * Added AKST/AKDT to Time::Zone
32
33 Changes prior to 1.17
34
035 Change 814 on 2003/06/03 by <gbarr@pobox.com> (Graham Barr)
136
237 Date::Parse
00 ChangeLog
1 MANIFEST
2 Makefile.PL
3 README
41 lib/Date/Format.pm
52 lib/Date/Language.pm
63 lib/Date/Language/Afar.pm
74 lib/Date/Language/Amharic.pm
85 lib/Date/Language/Austrian.pm
96 lib/Date/Language/Brazilian.pm
7 lib/Date/Language/Chinese.pm
108 lib/Date/Language/Chinese_GB.pm
119 lib/Date/Language/Czech.pm
1210 lib/Date/Language/Danish.pm
1715 lib/Date/Language/Gedeo.pm
1816 lib/Date/Language/German.pm
1917 lib/Date/Language/Greek.pm
18 lib/Date/Language/Hungarian.pm
19 lib/Date/Language/Icelandic.pm
2020 lib/Date/Language/Italian.pm
2121 lib/Date/Language/Norwegian.pm
2222 lib/Date/Language/Oromo.pm
23 lib/Date/Language/Romanian.pm
24 lib/Date/Language/Russian.pm
25 lib/Date/Language/Russian_cp1251.pm
26 lib/Date/Language/Russian_koi8r.pm
2327 lib/Date/Language/Sidama.pm
2428 lib/Date/Language/Somali.pm
29 lib/Date/Language/Spanish.pm
2530 lib/Date/Language/Swedish.pm
2631 lib/Date/Language/Tigrinya.pm
2732 lib/Date/Language/TigrinyaEritrean.pm
2833 lib/Date/Language/TigrinyaEthiopian.pm
34 lib/Date/Language/Turkish.pm
2935 lib/Date/Parse.pm
3036 lib/Time/Zone.pm
37 Makefile.PL
38 MANIFEST
39 README
40 t/cpanrt.t
3141 t/date.t
3242 t/format.t
3343 t/getdate.t
3444 t/lang.t
45 META.yml Module meta-data (added by MakeMaker)
46 SIGNATURE Public-key signature (added by MakeMaker)
0 --- #YAML:1.0
1 name: TimeDate
2 version: 1.19
3 abstract: ~
4 author:
5 - Graham Barr <gbarr@pobox.com>
6 license: perl
7 distribution_type: module
8 configure_requires:
9 ExtUtils::MakeMaker: 0
10 requires: {}
11 resources:
12 repository: http://github.com/gbarr/perl-TimeDate
13 no_index:
14 directory:
15 - t
16 - inc
17 generated_by: ExtUtils::MakeMaker version 6.48
18 meta-spec:
19 url: http://module-build.sourceforge.net/META-spec-v1.4.html
20 version: 1.4
00 # This -*- perl -*- script makes the Makefile
1 # $Id: //depot/TimeDate/Makefile.PL#11 $
2
3 #--- Distribution section ---
4
5 $DISTNAME = 'TimeDate';
6 $VERSION = "1.16";
7
8 #--- Write the Makefile
91
102 BEGIN { require 5.004 }
113
4 use strict;
5 use warnings;
126 use ExtUtils::MakeMaker;
137
148 WriteMakefile(
15 VERSION => $VERSION,
16 NAME => $DISTNAME,
9 NAME => 'TimeDate',
10 AUTHOR => 'Graham Barr <gbarr@pobox.com>',
11 VERSION => '1.19',
12 (eval { ExtUtils::MakeMaker->VERSION(6.21) } ? (LICENSE => 'perl') : ()),
13 ( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? (
14 META_MERGE => {
15 resources => { ##
16 repository => 'http://github.com/gbarr/perl-TimeDate',
17 },
18 }
19 )
20 : ()
21 ),
1722 );
18
19
1717
1818 Please report any bugs/suggestions to <gbarr@pobox.com>
1919
20 Copyright 1996-2000 Graham Barr. All rights reserved.
20 Copyright 1995-2009 Graham Barr.
2121
2222 This library is free software; you can redistribute it and/or modify
2323 it under the same terms as Perl itself.
0 This file contains message digests of all files listed in MANIFEST,
1 signed via the Module::Signature module, version 0.55.
2
3 To verify the content in this distribution, first make sure you have
4 Module::Signature installed, then type:
5
6 % cpansign -v
7
8 It will check each file's integrity, as well as the signature's
9 validity. If "==> Signature verified OK! <==" is not displayed,
10 the distribution may already have been compromised, and you should
11 not run its Makefile.PL or Build.PL.
12
13 -----BEGIN PGP SIGNED MESSAGE-----
14 Hash: SHA1
15
16 SHA1 1cfbd5694da3169c17b3648846c9f5e7223f4d26 ChangeLog
17 SHA1 205981f550ad232f94d59d8eb79c5e6ecbe8f48d MANIFEST
18 SHA1 8e0c2e200e666305e860ca20930ddf7f285825f3 META.yml
19 SHA1 6f6d8f3971192224df63d9864dc341078c15286d Makefile.PL
20 SHA1 80cff3b1f65e7df95eaa1a992b688c2c5e1d2b6e README
21 SHA1 6823bd5e2e3cac12b7b9870d9840f4606f3eb422 lib/Date/Format.pm
22 SHA1 08342e72298e839f21236dff7555f2505f928d32 lib/Date/Language.pm
23 SHA1 50703aeade60a04398517416d30a2d8918c95578 lib/Date/Language/Afar.pm
24 SHA1 f9450ca0047510a4102c32cc4e20a435cdd85b31 lib/Date/Language/Amharic.pm
25 SHA1 f00534703736026830f729445d0d6f582481a05e lib/Date/Language/Austrian.pm
26 SHA1 c5af5f819bbd3eff3b404e62f1a3735d7e4a038b lib/Date/Language/Brazilian.pm
27 SHA1 e89738e9f3611a6de79cef7e791c20a05ac2a057 lib/Date/Language/Chinese.pm
28 SHA1 d8765df8f8368d6b467a87b1f32397d50253747a lib/Date/Language/Chinese_GB.pm
29 SHA1 f5061baf9b980aa0e8feefab059214775bb8182e lib/Date/Language/Czech.pm
30 SHA1 726c12ddd66f70ddcfd5bbdbc094777255eb2b9b lib/Date/Language/Danish.pm
31 SHA1 8566be869607c2b2024821def260de5a828f005f lib/Date/Language/Dutch.pm
32 SHA1 ab20e0b3487b85a54a3d6321b50d01d43fe78427 lib/Date/Language/English.pm
33 SHA1 9b057eea719ed24f643f4d284cf1fa6ae594e7dc lib/Date/Language/Finnish.pm
34 SHA1 105169f2848df40ac1111f0130ec1bb4b74647d8 lib/Date/Language/French.pm
35 SHA1 dc2f9c1cee48be3b73613ca9ed1291e9c976a37e lib/Date/Language/Gedeo.pm
36 SHA1 794a9b715e66fdcc428a65b2972ced4fee62b52c lib/Date/Language/German.pm
37 SHA1 863bb62fd08b3e61c63a2df3d65323d8e6c1b651 lib/Date/Language/Greek.pm
38 SHA1 8f0678fee75492f3675cf0b130fd39c7a589a552 lib/Date/Language/Hungarian.pm
39 SHA1 34da50806290fe731fd1e01290728fcd0b6d02a2 lib/Date/Language/Icelandic.pm
40 SHA1 de5069f424fed480586bc2dcff1cca1930bf98a1 lib/Date/Language/Italian.pm
41 SHA1 e4e81280ba513a3ab6e0bee01704913dd730c9a8 lib/Date/Language/Norwegian.pm
42 SHA1 13165e5b72586200a106aa2870fe92b49d94dd8c lib/Date/Language/Oromo.pm
43 SHA1 71eaea1d32b8fcfa23c5a815e3fa54b9f84af80c lib/Date/Language/Romanian.pm
44 SHA1 806f38e0789bf10f2e843c69f68bcfa50c0d78eb lib/Date/Language/Russian.pm
45 SHA1 292c36c93532a57b667d7deedc23cefbb9bf478c lib/Date/Language/Russian_cp1251.pm
46 SHA1 26efbebc7afd065da56ec09ee3b062a9ddd4a2d3 lib/Date/Language/Russian_koi8r.pm
47 SHA1 d1658daedcf106f01869a4371b9c3e572330f864 lib/Date/Language/Sidama.pm
48 SHA1 58f9ded75fc18c26eeb96ce6374e66565ad01494 lib/Date/Language/Somali.pm
49 SHA1 8b970f347eb0718e210d7613db5ba88b124d189e lib/Date/Language/Spanish.pm
50 SHA1 a52f8968a0fdf3e735d62f71b91d6b64a5f98fa3 lib/Date/Language/Swedish.pm
51 SHA1 5da829cf39dc01331ad58f66eced0a1f47e346b6 lib/Date/Language/Tigrinya.pm
52 SHA1 20fc6beb32657ca147719f713ff816bbb696da20 lib/Date/Language/TigrinyaEritrean.pm
53 SHA1 30f77a43a000f2ce3d22b1b633261a20289025aa lib/Date/Language/TigrinyaEthiopian.pm
54 SHA1 54288741c52b09ee92b0487848df74a08cdc3b9e lib/Date/Language/Turkish.pm
55 SHA1 dbcc4a151b1c558b32ed61fa7ee98e0fb47b9d7f lib/Date/Parse.pm
56 SHA1 394c7d372c25107ba5151ceca44c0599188907c7 lib/Time/Zone.pm
57 SHA1 62465108c0d5fc14e08ae41e2f963c4d9074b1d6 t/cpanrt.t
58 SHA1 7b16580497a96a4bc551b87b8b97ec89331e81f8 t/date.t
59 SHA1 bf6f4a7c599485ab11779c99fc821378e547d26d t/format.t
60 SHA1 acef4dd152cd391a3e7a7945c8405a50d965f335 t/getdate.t
61 SHA1 501dcb487e33f6b2d4577ef2e6e5f67f038d3c04 t/lang.t
62 -----BEGIN PGP SIGNATURE-----
63 Version: GnuPG v1.4.9 (Darwin)
64
65 iEYEARECAAYFAkq9E3QACgkQR0BL4gbYw3QQYACfQg56MxwRuw6XPWOfpumki+CN
66 CWAAn1WM3GKmUyJdxf9g95yvZl552Tg0
67 =2lbe
68 -----END PGP SIGNATURE-----
0 # Date::Format $Id: //depot/TimeDate/lib/Date/Format.pm#9 $
1 #
2 # Copyright (c) 1995-1999 Graham Barr. All rights reserved. This program is free
0 # Copyright (c) 1995-2009 Graham Barr. This program is free
31 # software; you can redistribute it and/or modify it under the same terms
42 # as Perl itself.
53
97 use vars qw(@EXPORT @ISA $VERSION);
108 require Exporter;
119
12 $VERSION = "2.22";
10 $VERSION = "2.23";
1311 @ISA = qw(Exporter);
1412 @EXPORT = qw(time2str strftime ctime asctime);
1513
235233 sub format_z {
236234 my $t = timelocal(@{$_[0]}[0..5]);
237235 my $o = defined $tzname ? tz_offset($tzname, $t) : tz_offset(undef,$t);
238 sprintf("%+03d%02d", int($o / 3600), abs(int($o % 3600)));
236 sprintf("%+03d%02d", int($o / 3600), int(abs($o) % 3600) / 60);
239237 }
240238
241239 sub format_c { &format_x . " " . &format_X }
323321
324322 =head1 MULTI-LANGUAGE SUPPORT
325323
326 Date::Format is capable of formating into several languages, these are
327 English, French, German and Italian. Changing the language is done via
328 a static method call, for example
329
330 Date::Format->language('German');
331
332 will change the language in which all subsequent dates are formatted.
333
334 This is only a first pass, I am considering changing this to be
335
336 $lang = Date::Language->new('German');
324 Date::Format is capable of formating into several languages by creating
325 a language specific object and calling methods, see L<Date::Language>
326
327 my $lang = Date::Language->new('German');
337328 $lang->time2str("%a %b %e %T %Y\n", time);
338329
339330 I am open to suggestions on this.
353344 %c MM/DD/YY HH:MM:SS
354345 %C ctime format: Sat Nov 19 21:05:57 1994
355346 %d numeric day of the month, with leading zeros (eg 01..31)
356 %e numeric day of the month, without leading zeros (eg 1..31)
347 %e like %d, but a leading zero is replaced by a space (eg 1..32)
357348 %D MM/DD/YY
358349 %G GPS week number (weeks since January 6, 1980)
359350 %h month abbr
390381 C<%y> and C<%Y> can be output in Roman numerals by prefixing the letter
391382 with C<O>, e.g. C<%OY> will output the year as roman numerals.
392383
384 =head1 LIMITATION
385
386 The functions in this module are limited to the time range that can be
387 represented by the time_t data type, i.e. 1901-12-13 20:45:53 GMT to
388 2038-01-19 03:14:07 GMT.
389
393390 =head1 AUTHOR
394391
395392 Graham Barr <gbarr@pobox.com>
396393
397394 =head1 COPYRIGHT
398395
399 Copyright (c) 1995-1999 Graham Barr. All rights reserved. This program is free
396 Copyright (c) 1995-2009 Graham Barr. This program is free
400397 software; you can redistribute it and/or modify it under the same terms
401398 as Perl itself.
402399
1414 @DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
1515 @DoWs = qw(Son Mon Die Mit Don Fre Sam);
1616
17 use Date::Language::English ();
1718 @AMPM = @{Date::Language::English::AMPM};
1819 @Dsuf = @{Date::Language::English::Dsuf};
1920
0 ##
1 ## English tables
2 ##
3
4 package Date::Language::Chinese;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.00";
10
11 @DoW = qw(星期日 星期一 星期二 星期三 星期四 星期五 星期六);
12 @MoY = qw(一月 二月 三月 四月 五月 六月
13 七月 八月 九月 十月 十一月 十二月);
14 @DoWs = map { $_ } @DoW;
15 @MoYs = map { $_ } @MoY;
16 @AMPM = qw(上午 下午);
17
18 @Dsuf = (qw(日 日 日 日 日 日 日 日 日 日)) x 3;
19
20 @MoY{@MoY} = (0 .. scalar(@MoY));
21 @MoY{@MoYs} = (0 .. scalar(@MoYs));
22 @DoW{@DoW} = (0 .. scalar(@DoW));
23 @DoW{@DoWs} = (0 .. scalar(@DoWs));
24
25 # Formatting routines
26
27 sub format_a { $DoWs[$_[0]->[6]] }
28 sub format_A { $DoW[$_[0]->[6]] }
29 sub format_b { $MoYs[$_[0]->[4]] }
30 sub format_B { $MoY[$_[0]->[4]] }
31 sub format_h { $MoYs[$_[0]->[4]] }
32 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
33
34 sub format_o { sprintf("%2d%s",$_[0]->[3],"日") }
35 1;
1414 @DoW = qw(Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag Søndag);
1515 @DoWs = qw(Søn Man Tir Ons Tor Fre Lør Søn);
1616
17 use Date::Language::English ();
1718 @AMPM = @{Date::Language::English::AMPM};
1819 @Dsuf = @{Date::Language::English::Dsuf};
1920
1414 @DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
1515 @DoWs = qw(Son Mon Die Mit Don Fre Sam);
1616
17 require Date::Language::English;
17 use Date::Language::English ();
1818 @AMPM = @{Date::Language::English::AMPM};
1919 @Dsuf = @{Date::Language::English::Dsuf};
2020
0 ##
1 ## Hungarian tables based on English
2 ##
3 #
4 # This is a just-because-I-stumbled-across-it
5 # -and-my-wife-is-Hungarian release: if Graham or
6 # someone adds to docs to Date::Format, I'd be
7 # glad to correct bugs and extend as neeed.
8 #
9
10 package Date::Language::Hungarian;
11
12 =head1 NAME
13
14 Date::Language::Hungarian - Magyar format for Date::Format
15
16 =head1 SYNOPSIS
17
18 my $lang = Date::Language->new('Hungarian');
19 print $lang->time2str("%a %b %e %T %Y", time);
20
21 @lt = localtime(time);
22 print $lang->time2str($template, time);
23 print $lang->strftime($template, @lt);
24
25 print $lang->time2str($template, time, $zone);
26 print $lang->strftime($template, @lt, $zone);
27
28 print $lang->ctime(time);
29 print $lang->asctime(@lt);
30
31 print $lang->ctime(time, $zone);
32 print $lang->asctime(@lt, $zone);
33
34 See L<Date::Format>.
35
36 =head1 AUTHOR
37
38 Paula Goddard (paula -at- paulacska -dot- com)
39
40 =head1 LICENCE
41
42 Made available under the same terms as Perl itself.
43
44 =cut
45
46 use strict;
47 use warnings;
48 use base "Date::Language";
49 use vars qw( @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
50 $VERSION = "1.01";
51
52 @DoW = qw(Vasárnap Hétfõ Kedd Szerda Csütörtök Péntek Szombat);
53 @MoY = qw(Január Február Március Április Május Június
54 Július Augusztus Szeptember Október November December);
55 @DoWs = map { substr($_,0,3) } @DoW;
56 @MoYs = map { substr($_,0,3) } @MoY;
57 @AMPM = qw(DE. DU.);
58
59 # There is no 'th or 'nd in Hungarian, just a dot
60 @Dsuf = (".") x 31;
61
62 @MoY{@MoY} = (0 .. scalar(@MoY));
63 @MoY{@MoYs} = (0 .. scalar(@MoYs));
64 @DoW{@DoW} = (0 .. scalar(@DoW));
65 @DoW{@DoWs} = (0 .. scalar(@DoWs));
66
67 # Formatting routines
68
69 sub format_a { $DoWs[$_[0]->[6]] }
70 sub format_A { $DoW[$_[0]->[6]] }
71 sub format_b { $MoYs[$_[0]->[4]] }
72 sub format_B { $MoY[$_[0]->[4]] }
73 sub format_h { $MoYs[$_[0]->[4]] }
74 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
75 sub format_P { lc($_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0]) }
76 sub format_o { $_[0]->[3].'.' }
77
78
79
80 sub format_D { &format_y . "." . &format_m . "." . &format_d }
81
82 sub format_y { sprintf("%02d",$_[0]->[5] % 100) }
83 sub format_d { sprintf("%02d",$_[0]->[3]) }
84 sub format_m { sprintf("%02d",$_[0]->[4] + 1) }
85
86
87 1;
0 ##
1 ## Icelandic tables
2 ##
3
4 package Date::Language::Icelandic;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.01";
10
11 @MoY = qw(Janúar Febrúar Mars Apríl Maí Júni
12 Júli Ágúst September Október Nóvember Desember);
13 @MoYs = qw(Jan Feb Mar Apr Maí Jún Júl Ágú Sep Okt Nóv Des);
14 @DoW = qw(Sunnudagur Mánudagur Şriğjudagur Miğvikudagur Fimmtudagur Föstudagur Laugardagur Sunnudagur);
15 @DoWs = qw(Sun Mán Þri Mið Fim Fös Lau Sun);
16
17 use Date::Language::English ();
18 @AMPM = @{Date::Language::English::AMPM};
19 @Dsuf = @{Date::Language::English::Dsuf};
20
21 @MoY{@MoY} = (0 .. scalar(@MoY));
22 @MoY{@MoYs} = (0 .. scalar(@MoYs));
23 @DoW{@DoW} = (0 .. scalar(@DoW));
24 @DoW{@DoWs} = (0 .. scalar(@DoWs));
25
26 # Formatting routines
27
28 sub format_a { $DoWs[$_[0]->[6]] }
29 sub format_A { $DoW[$_[0]->[6]] }
30 sub format_b { $MoYs[$_[0]->[4]] }
31 sub format_B { $MoY[$_[0]->[4]] }
32 sub format_h { $MoYs[$_[0]->[4]] }
33 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
34
35 1;
1414 @DoW = qw(Domenica Lunedi Martedi Mercoledi Giovedi Venerdi Sabato);
1515 @DoWs = qw(Dom Lun Mar Mer Gio Ven Sab);
1616
17 use Date::Language::English ();
1718 @AMPM = @{Date::Language::English::AMPM};
1819 @Dsuf = @{Date::Language::English::Dsuf};
1920
1414 @DoW = qw(Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag Søndag);
1515 @DoWs = qw(Søn Man Tir Ons Tor Fre Lør Søn);
1616
17 use Date::Language::English ();
1718 @AMPM = @{Date::Language::English::AMPM};
1819 @Dsuf = @{Date::Language::English::Dsuf};
1920
0 ##
1 ## Italian tables
2 ##
3
4 package Date::Language::Romanian;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.01";
10
11 @MoY = qw(ianuarie februarie martie aprilie mai iunie
12 iulie august septembrie octombrie noembrie decembrie);
13 @DoW = qw(duminica luni marti miercuri joi vineri sambata);
14 @DoWs = map { substr($_,0,3) } @DoW;
15 @MoYs = map { substr($_,0,3) } @MoY;
16
17 @AMPM = qw(AM PM);
18
19 @Dsuf = ('') x 31;
20
21
22 @MoY{@MoY} = (0 .. scalar(@MoY));
23 @MoY{@MoYs} = (0 .. scalar(@MoYs));
24 @DoW{@DoW} = (0 .. scalar(@DoW));
25 @DoW{@DoWs} = (0 .. scalar(@DoWs));
26
27 # Formatting routines
28
29 sub format_a { $DoWs[$_[0]->[6]] }
30 sub format_A { $DoW[$_[0]->[6]] }
31 sub format_b { $MoYs[$_[0]->[4]] }
32 sub format_B { $MoY[$_[0]->[4]] }
33 sub format_h { $MoYs[$_[0]->[4]] }
34 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
35
36 1;
0 ##
1 ## Russian tables
2 ##
3 ## Contributed by Danil Pismenny <dapi@mail.ru>
4
5 package Date::Language::Russian;
6
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @MoY2 @AMPM %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language Date::Format::Generic);
9 $VERSION = "1.01";
10
11 @MoY = qw(Января Февраля Марта Апреля Мая Июня Июля Августа Сентября Октября Ноября Декабря);
12 @MoY2 = qw(Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь);
13 @MoYs = qw(Янв Фев Мрт Апр Май Июн Июл Авг Сен Окт Ноя Дек);
14
15 @DoW = qw(Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье);
16 @DoWs = qw(Пн Вт Ср Чт Пт Сб Вс);
17 @DoWs2 = qw(Пнд Втр Срд Чтв Птн Сбт Вск);
18
19 @AMPM = qw(─л лл);
20
21 @MoY{@MoY} = (0 .. scalar(@MoY));
22 @MoY{@MoYs} = (0 .. scalar(@MoYs));
23 @DoW{@DoW} = (0 .. scalar(@DoW));
24 @DoW{@DoWs} = (0 .. scalar(@DoWs));
25
26 # Formatting routines
27
28 sub format_a { $DoWs[$_[0]->[6]] }
29 sub format_A { $DoW[$_[0]->[6]] }
30 sub format_b { $MoYs[$_[0]->[4]] }
31 sub format_B { $MoY[$_[0]->[4]] }
32 sub format_h { $MoYs[$_[0]->[4]] }
33 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
34
35 sub format_d { $_[0]->[3] }
36 sub format_m { $_[0]->[4] + 1 }
37 sub format_o { $_[0]->[3] . '.' }
38
39 sub format_Q { $MoY2[$_[0]->[4]] }
40
41 sub str2time {
42 my ($self,$value) = @_;
43 map {$value=~s/(\s|^)$DoWs2[$_](\s)/$DoWs[$_]$2/ig} (0..6);
44 $value=~s/(\s+|^)ь┴м(\s+)/$1ьмн$2/;
45 return $self->SUPER::str2time($value);
46 }
47
48 1;
0 ##
1 ## Russian cp1251
2 ##
3
4 package Date::Language::Russian_cp1251;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.01";
10
11 @DoW = qw(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота);
12 @MoY = qw(Январь Февраль Март Апрель Май Июнь
13 Июль Август Сентябрь Октябрь Ноябрь Декабрь);
14 @DoWs = qw(Вск Пнд Втр Срд Чтв Птн Сбт);
15 #@DoWs = map { substr($_,0,3) } @DoW;
16 @MoYs = map { substr($_,0,3) } @MoY;
17 @AMPM = qw(AM PM);
18
19 @Dsuf = ('e') x 31;
20 #@Dsuf[11,12,13] = qw(å å å);
21 #@Dsuf[30,31] = qw(å å);
22
23 @MoY{@MoY} = (0 .. scalar(@MoY));
24 @MoY{@MoYs} = (0 .. scalar(@MoYs));
25 @DoW{@DoW} = (0 .. scalar(@DoW));
26 @DoW{@DoWs} = (0 .. scalar(@DoWs));
27
28 # Formatting routines
29
30 sub format_a { $DoWs[$_[0]->[6]] }
31 sub format_A { $DoW[$_[0]->[6]] }
32 sub format_b { $MoYs[$_[0]->[4]] }
33 sub format_B { $MoY[$_[0]->[4]] }
34 sub format_h { $MoYs[$_[0]->[4]] }
35 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
36 sub format_o { sprintf("%2de",$_[0]->[3]) }
37
38 1;
0 ##
1 ## Russian koi8r
2 ##
3
4 package Date::Language::Russian_koi8r;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.01";
10
11 @DoW = qw(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота);
12 @MoY = qw(Январь Февраль Март Апрель Май Июнь
13 Июль Август Сентябрь Октябрь Ноябрь Декабрь);
14 @DoWs = qw(Вск Пнд Втр Срд Чтв Птн Сбт);
15 #@DoWs = map { substr($_,0,3) } @DoW;
16 @MoYs = map { substr($_,0,3) } @MoY;
17 @AMPM = qw(AM PM);
18
19 @Dsuf = ('e') x 31;
20 #@Dsuf[11,12,13] = qw(Å Å Å);
21 #@Dsuf[30,31] = qw(Å Å);
22
23 @MoY{@MoY} = (0 .. scalar(@MoY));
24 @MoY{@MoYs} = (0 .. scalar(@MoYs));
25 @DoW{@DoW} = (0 .. scalar(@DoW));
26 @DoW{@DoWs} = (0 .. scalar(@DoWs));
27
28 # Formatting routines
29
30 sub format_a { $DoWs[$_[0]->[6]] }
31 sub format_A { $DoW[$_[0]->[6]] }
32 sub format_b { $MoYs[$_[0]->[4]] }
33 sub format_B { $MoY[$_[0]->[4]] }
34 sub format_h { $MoYs[$_[0]->[4]] }
35 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
36 sub format_o { sprintf("%2de",$_[0]->[3]) }
37
38 1;
0 ##
1 ## Spanish tables
2 ##
3
4 package Date::Language::Spanish;
5
6 use Date::Language ();
7 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
8 @ISA = qw(Date::Language);
9 $VERSION = "1.00";
10
11 @DoW = qw(domingo lunes martes miércoles jueves viernes sábado);
12 @MoY = qw(enero febrero marzo abril mayo junio
13 julio agosto septiembre octubre noviembre diciembre);
14 @DoWs = map { substr($_,0,3) } @DoW;
15 @MoYs = map { substr($_,0,3) } @MoY;
16 @AMPM = qw(AM PM);
17
18 @Dsuf = ((qw(ro do ro to to to mo vo no mo)) x 3, 'ro');
19
20 @MoY{@MoY} = (0 .. scalar(@MoY));
21 @MoY{@MoYs} = (0 .. scalar(@MoYs));
22 @DoW{@DoW} = (0 .. scalar(@DoW));
23 @DoW{@DoWs} = (0 .. scalar(@DoWs));
24
25 # Formatting routines
26
27 sub format_a { $DoWs[$_[0]->[6]] }
28 sub format_A { $DoW[$_[0]->[6]] }
29 sub format_b { $MoYs[$_[0]->[4]] }
30 sub format_B { $MoY[$_[0]->[4]] }
31 sub format_h { $MoYs[$_[0]->[4]] }
32 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
33
34 1;
1818 # the ordinals are not typically used in modern times
1919 @Dsuf = ('a' x 2, 'e' x 29);
2020
21 use Date::Language::English ();
2122 @AMPM = @{Date::Language::English::AMPM};
2223
2324
3637 sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
3738 sub format_o { sprintf("%2de",$_[0]->[3]) }
3839
39 1;
40 1;
88 @ISA = qw(Date::Language);
99 $VERSION = "1.00";
1010
11 @DoW = qw(
12 "\x{U1230}\x{U1295}\x{U1260}\x{U1275}",
13 "\x{U1230}\x{U1291}\x{U12ed}",
14 "\x{U1230}\x{U1209}\x{U1235}",
15 "\x{U1228}\x{U1261}\x{U12d5}",
16 "\x{U1213}\x{U1219}\x{U1235}",
17 "\x{U12d3}\x{U122d}\x{U1262}",
18 "\x{U1240}\x{U12f3}\x{U121d}"
11 @DoW = (
12 "\x{1230}\x{1295}\x{1260}\x{1275}",
13 "\x{1230}\x{1291}\x{12ed}",
14 "\x{1230}\x{1209}\x{1235}",
15 "\x{1228}\x{1261}\x{12d5}",
16 "\x{1213}\x{1219}\x{1235}",
17 "\x{12d3}\x{122d}\x{1262}",
18 "\x{1240}\x{12f3}\x{121d}"
1919 );
20 @MoY = qw(
21 "\x{U1303}\x{U1295}\x{U12e9}\x{U12c8}\x{U122a}",
22 "\x{U134c}\x{U1265}\x{U1229}\x{U12c8}\x{U122a}",
23 "\x{U121b}\x{U122d}\x{U127d}",
24 "\x{U12a4}\x{U1355}\x{U1228}\x{U120d}",
25 "\x{U121c}\x{U12ed}",
26 "\x{U1301}\x{U1295}",
27 "\x{U1301}\x{U120b}\x{U12ed}",
28 "\x{U12a6}\x{U1308}\x{U1235}\x{U1275}",
29 "\x{U1234}\x{U1355}\x{U1274}\x{U121d}\x{U1260}\x{U122d}",
30 "\x{U12a6}\x{U12ad}\x{U1270}\x{U12cd}\x{U1260}\x{U122d}",
31 "\x{U1296}\x{U126c}\x{U121d}\x{U1260}\x{U122d}",
32 "\x{U12f2}\x{U1234}\x{U121d}\x{U1260}\x{U122d}"
20 @MoY = (
21 "\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
22 "\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
23 "\x{121b}\x{122d}\x{127d}",
24 "\x{12a4}\x{1355}\x{1228}\x{120d}",
25 "\x{121c}\x{12ed}",
26 "\x{1301}\x{1295}",
27 "\x{1301}\x{120b}\x{12ed}",
28 "\x{12a6}\x{1308}\x{1235}\x{1275}",
29 "\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
30 "\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
31 "\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
32 "\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
3333 );
3434 @DoWs = map { substr($_,0,3) } @DoW;
3535 @MoYs = map { substr($_,0,3) } @MoY;
0 #----------------------------------------------------#
1 #
2 # Turkish tables
3 # Burak Gürsoy <burak@cpan.org>
4 # Last modified: Sat Nov 15 20:28:32 2003
5 #
6 # use Date::Language;
7 # my $turkish = Date::Language->new('Turkish');
8 # print $turkish->time2str("%e %b %Y, %a %T\n", time);
9 # print $turkish->str2time("25 Haz 1996 21:09:55 +0100");
10 #----------------------------------------------------#
11
12 package Date::Language::Turkish;
13 use Date::Language ();
14 use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION %DsufMAP);
15 @ISA = qw(Date::Language);
16 $VERSION = "1.0";
17
18 @DoW = qw(Pazar Pazartesi Salý Çarþamba Perþembe Cuma Cumartesi);
19 @MoY = qw(Ocak Þubat Mart Nisan Mayýs Haziran Temmuz Aðustos Eylül Ekim Kasým Aralýk);
20 @DoWs = map { substr($_,0,3) } @DoW;
21 $DoWs[1] = 'Pzt'; # Since we'll get two 'Paz' s
22 $DoWs[-1] = 'Cmt'; # Since we'll get two 'Cum' s
23 @MoYs = map { substr($_,0,3) } @MoY;
24 @AMPM = ('',''); # no am-pm thingy
25
26 # not easy as in english... maybe we can just use a dot "." ? :)
27 %DsufMAP = (
28 (map {$_ => 'inci', $_+10 => 'inci', $_+20 => 'inci' } 1,2,5,8 ),
29 (map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 7 ),
30 (map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 2 ),
31 (map {$_ => 'üncü', $_+10 => 'üncü', $_+20 => 'üncü' } 3,4 ),
32 (map {$_ => 'uncu', $_+10 => 'uncu', $_+20 => 'uncu' } 9 ),
33 (map {$_ => 'ncý', $_+10 => 'ncý', $_+20 => 'ncý' } 6 ),
34 (map {$_ => 'uncu', } 10,30 ),
35 20 => 'nci',
36 31 => 'inci',
37 );
38
39 @Dsuf = map{ $DsufMAP{$_} } sort {$a <=> $b} keys %DsufMAP;
40 @MoY{@MoY} = (0 .. scalar(@MoY));
41 @MoY{@MoYs} = (0 .. scalar(@MoYs));
42 @DoW{@DoW} = (0 .. scalar(@DoW));
43 @DoW{@DoWs} = (0 .. scalar(@DoWs));
44
45 # Formatting routines
46
47 sub format_a { $DoWs[$_[0]->[6]] }
48 sub format_A { $DoW[ $_[0]->[6]] }
49 sub format_b { $MoYs[$_[0]->[4]] }
50 sub format_B { $MoY[ $_[0]->[4]] }
51 sub format_h { $MoYs[$_[0]->[4]] }
52 sub format_p { '' } # disable
53 sub format_P { '' } # disable
54 sub format_o { sprintf("%2d%s",$_[0]->[3],$Dsuf[$_[0]->[3]-1]) }
55
56 1;
57
58 __END__
8080 }
8181
8282 1;
83
84 __END__
85
86
87 =head1 NAME
88
89 Date::Language - Language specific date formating and parsing
90
91 =head1 SYNOPSIS
92
93 use Date::Language;
94
95 my $lang = Date::Language->new('German');
96 $lang->time2str("%a %b %e %T %Y\n", time);
97
98 =head1 DESCRIPTION
99
100 L<Date::Language> provides objects to parse and format dates for specific languages. Available languages are
101
102 Afar French Russian_cp1251
103 Amharic Gedeo Russian_koi8r
104 Austrian German Sidama
105 Brazilian Greek Somali
106 Chinese Hungarian Spanish
107 Chinese_GB Icelandic Swedish
108 Czech Italian Tigrinya
109 Danish Norwegian TigrinyaEritrean
110 Dutch Oromo TigrinyaEthiopian
111 English Romanian Turkish
112 Finnish Russian
113
114 =head1 METHODS
115
116 =over
117
118 =item time2str
119
120 See L<Date::Format/time2str>
121
122 =item strftime
123
124 See L<Date::Format/strftime>
125
126 =item ctime
127
128 See L<Date::Format/ctime>
129
130 =item asctime
131
132 See L<Date::Format/asctime>
133
134 =item str2time
135
136 See L<Date::Parse/str2time>
137
138 =item strptime
139
140 See L<Date::Parse/strptime>
141
142 =back
143
0 # Date::Parse $Id: //depot/TimeDate/lib/Date/Parse.pm#22 $
1 #
2 # Copyright (c) 1995 Graham Barr. All rights reserved. This program is free
0 # Copyright (c) 1995-2009 Graham Barr. This program is free
31 # software; you can redistribute it and/or modify it under the same terms
42 # as Perl itself.
53
1614 @ISA = qw(Exporter);
1715 @EXPORT = qw(&strtotime &str2time &strptime);
1816
19 $VERSION = "2.27";
17 $VERSION = "2.29";
2018
2119 my %month = (
2220 january => 0,
8583 # ignore day names
8684 $dtstr =~ s#([\d\w\s])[\.\,]\s#$1 #sog;
8785 $dtstr =~ s/,/ /g;
88 $dtstr =~ s#($daypat)\s*(den\s)?# #o;
86 $dtstr =~ s#($daypat)\s*(den\s)?\b# #o;
8987 # Time: 12:00 or 12:00:00 with optional am/pm
9088
9189 return unless $dtstr =~ /\S/;
9290
93 if ($dtstr =~ s/\s(\d{4})([-:]?)(\d\d?)\2(\d\d?)(?:[Tt ](\d\d?)(?:([-:]?)(\d\d?)(?:\6(\d\d?)(?:[.,](\d+))?)?)?)?(?=\D)/ /) {
91 if ($dtstr =~ s/\s(\d{4})([-:]?)(\d\d?)\2(\d\d?)(?:[-Tt ](\d\d?)(?:([-:]?)(\d\d?)(?:\6(\d\d?)(?:[.,](\d+))?)?)?)?(?=\D)/ /) {
9492 ($year,$month,$day,$hh,$mm,$ss,$frac) = ($1,$3-1,$4,$5,$7,$8,$9);
9593 }
9694
9795 unless (defined $hh) {
98 if ($dtstr =~ s#[:\s](\d\d?):(\d\d?)(:(\d\d?)(?:\.\d+)?)?\s*(?:([ap])\.?m?\.?)?\s# #o) {
99 ($hh,$mm,$ss) = ($1,$2,$4 || 0);
100 $merid = $ampm{$5} if $5;
96 if ($dtstr =~ s#[:\s](\d\d?):(\d\d?)(:(\d\d?)(?:\.\d+)?)?(z)?\s*(?:([ap])\.?m?\.?)?\s# #o) {
97 ($hh,$mm,$ss) = ($1,$2,$4);
98 $zone = 0 if $5;
99 $merid = $ampm{$6} if $6;
101100 }
102101
103102 # Time: 12 am
138137 }
139138 elsif ($dtstr =~ s#($monpat)\s*(\d+)\s*($sufpat)?\s# #o) {
140139 ($month,$day) = ($month{$1},$2);
140 }
141 elsif ($dtstr =~ s#($monpat)([\/-])(\d+)[\/-]# #o) {
142 ($month,$day) = ($month{$1},$3);
141143 }
142144
143145 # Date: 961212
258260 if (defined $zone) {
259261 $result = eval {
260262 local $SIG{__DIE__} = sub {}; # Ick!
261 timegm($ss,$mm,$hh,$day,$month,$year);
263 timegm($ss,$mm,$hh,$day,$month,$year+1900);
262264 };
263265 return undef
264266 if !defined $result
270272 else {
271273 $result = eval {
272274 local $SIG{__DIE__} = sub {}; # Ick!
273 timelocal($ss,$mm,$hh,$day,$month,$year);
275 timelocal($ss,$mm,$hh,$day,$month,$year+1900);
274276 };
275277 return undef
276278 if !defined $result
321323
322324 =head1 MULTI-LANGUAGE SUPPORT
323325
324 Date::Parse is capable of parsing dates in several languages, these are
326 Date::Parse is capable of parsing dates in several languages, these include
325327 English, French, German and Italian.
326328
327329 $lang = Date::Language->new('German');
345347
346348 =head1 LIMITATION
347349
348 Date::Parse uses Time::Local internally, so is limited to only parsing dates
349 which result in valid values for Time::Local::timelocal
350 Date::Parse uses L<Time::Local> internally, so is limited to only parsing dates
351 which result in valid values for Time::Local::timelocal. This generally means dates
352 between 1901-12-17 00:00:00 GMT and 2038-01-16 23:59:59 GMT
350353
351354 =head1 BUGS
352355
368371
369372 =head1 COPYRIGHT
370373
371 Copyright (c) 1995 Graham Barr. All rights reserved. This program is free
374 Copyright (c) 1995-2009 Graham Barr. This program is free
372375 software; you can redistribute it and/or modify it under the same terms
373376 as Perl itself.
374377
375378 =cut
376379
377 # $Id: //depot/TimeDate/lib/Date/Parse.pm#22 $
378
1919 This is a collection of miscellaneous timezone manipulation routines.
2020
2121 C<tz2zone()> parses the TZ environment variable and returns a timezone
22 string suitable for inclusion in L<date>-like output. It opionally takes
22 string suitable for inclusion in L<date(1)>-like output. It opionally takes
2323 a timezone string, a time, and a is-dst flag.
2424
2525 C<tz_local_offset()> determins the offset from GMT time in seconds. It
4747
4848 @ISA = qw(Exporter);
4949 @EXPORT = qw(tz2zone tz_local_offset tz_offset tz_name);
50 $VERSION = "2.22";
50 $VERSION = "2.24";
5151
5252 # Parts stolen from code by Paul Foley <paul@ascent.com>
5353
155155 "cdt" => -5*3600, # Central Daylight
156156 "mdt" => -6*3600, # Mountain Daylight
157157 "pdt" => -7*3600, # Pacific Daylight
158 "akdt" => -8*3600, # Alaska Daylight
158159 "ydt" => -8*3600, # Yukon Daylight
159160 "hdt" => -9*3600, # Hawaii Daylight
160161 "bst" => +1*3600, # British Summer
161162 "mest" => +2*3600, # Middle European Summer
163 "metdst" => +2*3600, # Middle European DST
162164 "sst" => +2*3600, # Swedish Summer
163165 "fst" => +2*3600, # French Summer
164166 "cest" => +2*3600, # Central European Daylight
165167 "eest" => +3*3600, # Eastern European Summer
168 "msd" => +4*3600, # Moscow Daylight
166169 "wadt" => +8*3600, # West Australian Daylight
167170 "kdt" => +10*3600, # Korean Daylight
168171 # "cadt" => +10*3600+1800, # Central Australian Daylight
172 "aedt" => +11*3600, # Eastern Australian Daylight
169173 "eadt" => +11*3600, # Eastern Australian Daylight
170174 "nzd" => +13*3600, # New Zealand Daylight
171175 "nzdt" => +13*3600, # New Zealand Daylight
193197 "cst" => -6*3600, # Central Standard
194198 "mst" => -7*3600, # Mountain Standard
195199 "pst" => -8*3600, # Pacific Standard
200 "akst" => -9*3600, # Alaska Standard
196201 "yst" => -9*3600, # Yukon Standard
197202 "hst" => -10*3600, # Hawaii Standard
198203 "cat" => -10*3600, # Central Alaska
210215 "eet" => +2*3600, # Eastern Europe, USSR Zone 1
211216 "ukr" => +2*3600, # Ukraine
212217 "bt" => +3*3600, # Baghdad, USSR Zone 2
218 "msk" => +3*3600, # Moscow
213219 # "it" => +3*3600+1800,# Iran
214220 "zp4" => +4*3600, # USSR Zone 3
215221 "zp5" => +5*3600, # USSR Zone 4
225231 "jst" => +9*3600, # Japan Standard, USSR Zone 8
226232 "kst" => +9*3600, # Korean Standard
227233 # "cast" => +9*3600+1800,# Central Australian Standard
234 "aest" => +10*3600, # Eastern Australian Standard
228235 "east" => +10*3600, # Eastern Australian Standard
229236 "gst" => +10*3600, # Guam Standard, USSR Zone 9
230237 "nzt" => +12*3600, # New Zealand
0 use Date::Format qw(time2str);
1 use Date::Parse qw(strptime);
2
3 print "1..5\n";
4
5 my $i = 1;
6
7 { # RT#45067 Date::Format with %z gives wrong results for half-hour timezones
8
9 foreach my $zone (qw(-0430 -0445)) {
10 my $zone_str = time2str("%Z %z", time, $zone);
11 print "# $zone => $zone_str\n";
12 print "not " unless $zone_str eq "$zone $zone";
13 print "ok ", $i++, "\n";
14 }
15 }
16
17
18 { # RT#48164: Date::Parse unable to set seconds correctly
19
20 foreach my $str ("2008.11.30 22:35 CET", "2008-11-30 22:35 CET") {
21 my @t = strptime($str);
22 my $t = join ":", map { defined($_) ? $_ : "-" } @t;
23 print "# $str => $t\n";
24 print "not " unless $t eq "-:35:22:30:10:108:3600";
25 print "ok ", $i++, "\n";
26 }
27 }
28
29 { # RT#17396: Parse error for french date with 'mars' (march) as month
30 use Date::Language;
31 my $dateP = Date::Language->new('French');
32 my $timestamp = $dateP->str2time('4 mars 2005');
33 my ($ss, $mm, $hh, $day, $month, $year, $zone) = localtime $timestamp;
34 $month++;
35 $year += 1900;
36 my $date = "$day/$month/$year";
37 print "# $date\n";
38 print "not " unless $date eq "4/3/2005";
39 print "ok ", $i++, "\n";
40 }
41
42
44
55 $data = qq!1995-01-24
66 1995-01-24T09:08:17.1823213
7 - 1935-01-24T09:08:17
8 - Fri Dec 17 00:00:00 1901 GMT
9 Tue Jan 16 23:59:59 2038 GMT
10 2001-02-02 00:00:00 GMT
11 2035-02-02 00:00:00 GMT
12 - 16 Jun 33 07:29:35 CST
13 2002-02-26-10:37:21.141 GMT
714 Wed, 16 Jun 94 07:29:35 CST
815 Wed, 16 Nov 94 07:29:35 CST
916 Mon, 21 Nov 94 07:42:23 CST
2936 21-dec 17:05
3037 21/dec 17:05
3138 21/dec/93 17:05
39 dec/21/93 17:05
40 Dec/21/1993 17:05:00
41 dec-21-1993 17:05
42 Dec-21-93 17:05:00
3243 dec 21 1994 17:05
3344 dec 21 94 17:05
3445 dec 21 94 17:05 GMT
125136 Tue, 15 Nov 1994 13:11:47 -0800
126137 Tue, 15 Nov 1994 13:18:38 -0800
127138 Tue, 15 Nov 1994 0:18:38 -0800
139 10:00:00Z
140 10:00:00
141 10:00
142 10:00 +100
143 10:00 +0100
144 20020722T100000Z
145 Jul 22 10:00:00 UTC 2002
146 2002-07-22 10:00:00Z
147 2002-07-22 10:00:00 Z
148 2002-07-22 10:00 Z
149 2002-07-22 10:00Z
150 2002-07-22 10:00 +100
151 2002-07-22 10:00 +0100
128152 !;
129153
130154 @data = split(/\n/, $data);
137161
138162 foreach (@data)
139163 {
140 $time = int str2time($_);
164 my $pre_1970 = s/^-\s*//;
165
166 if ($pre_1970 and $^O eq "MSWin32") {
167 print "ok ",$loop++," # skip\n";
168 next;
169 }
170
171 $time = str2time($_);
141172
142173 if(defined $time)
143174 {
175 $time = int $time;
176
144177 $x = time2str("%a %b %e %T %Y %Z",$time,'GMT');
145178
146179 printf "%-40s\t%s\n", $_,$x,"\n";
1818 1995-06-24 GMT ;803952000
1919 1995-06-24 BST ;803948400
2020 1992-1-2 12:01 GMT ;694353660
21 1992-1-2-12:01:00 GMT ;694353660
2122 Wed, 16 Jun 94 07:29:35 CST ;771773375
2223 Wed,16 Jun 94 07:29:35 CST ;771773375
2324 Wed, 16 Nov 94 07:29:35 CST ;784992575
131132 Jul 13 1999 1:23P GMT ;931872180
132133 Jul 13 1999 1:23P.M GMT ;931872180
133134 Jul 13 1999 1:23P.M. GMT ;931872180
135 Jul-13-1999 1:23P.M GMT ;931872180
136 Jul/13/1999 1:23P.M. GMT ;931872180
134137 2001-02-26T13:44:12-0700 ;983220252
135138 2001-02-26T13:44-0700 ;983220240
136139 2001-02-26T13-0700 ;983217600
141144 2002-11-07T23:31:49-05:00 ;1036729909
142145 2003-02-17T07:45:56Z ;1045467956
143146 2003-02-17T08:14:07.198189+0000 ;1045469647.198189
147 20020722T100000Z ;1027332000
148 Jul 22 10:00:00 UTC 2002 ;1027332000
149 2002-07-22 10:00:00Z ;1027332000
150 2002-07-22 10:00:00 Z ;1027332000
151 2002-07-22 10:00 Z ;1027332000
152 2002-07-22 10:00Z ;1027332000
153 2002-07-22 10:00 +100 ;1027328400
154 2002-07-22 10:00 +0100 ;1027328400
144155 !;
145156
146157 require Time::Local;