1#!/usr/local/bin/perl -w 2 3#Thanks to Andreas Koenig for converting all those dates to numbers 4#and adding the folloing acknowledgement into Date/t/getdate.t 5#Thanks to Graham Barr for writing these tests. Slightly adjusted for 6#the C version by Andreas Koenig, 96-06-08. 7 8use Date::Parse; 9 10$data = qq!1995-01-24 ;790905600 111995-06-24 ;803952000 1292/01/02 12:01 ;694353660 1392/01/02 12:01 AM ;694310460 1492/01/02 12:01 PM ;694353660 152002-11-02 11pm GMT ;1036278000 162002-11-02 11 pm GMT ;1036278000 171995-01-24 GMT ;790905600 181995-01-24 BST ;790902000 191995-06-24 GMT ;803952000 201995-06-24 BST ;803948400 211992-1-2 12:01 GMT ;694353660 22Wed, 16 Jun 94 07:29:35 CST ;771773375 23Wed,16 Jun 94 07:29:35 CST ;771773375 24Wed, 16 Nov 94 07:29:35 CST ;784992575 25Mon, 21 Nov 94 07:42:23 CST ;785425343 26Mon, 21 Nov 94 04:28:18 CST ;785413698 27Tue, 15 Nov 94 09:15:10 GMT ;784890910 28Wed, 16 Nov 94 09:39:49 GMT ;784978789 29Wed, 16 Nov 94 09:23:17 GMT ;784977797 30Wed, 16 Nov 94 12:39:49 GMT ;784989589 31Wed, 16 Nov 94 14:03:06 GMT ;784994586 32Wed, 16 Nov 94 05:30:51 CST ;784985451 33Thu, 17 Nov 94 03:19:30 CST ;785063970 341994:11:21T14:05:32+0000 ;785426732 35Mon, 21 Nov 94 14:05:32 GMT ;785426732 36Mon, 14 Nov 94 15:08:49 CST ;784847329 37Wed, 16 Nov 94 14:48:06 GMT ;784997286 38Thu, 17 Nov 94 14:22:03 GMT ;785082123 39Wed, 16 Nov 94 14:36:00 GMT ;784996560 40Wed, 16 Nov 94 09:23:17 GMT ;784977797 41Wed, 16 Nov 94 10:01:43 GMT ;784980103 42Wed, 16 Nov 94 15:03:35 GMT ;784998215 43Mon, 21 Nov 94 13:55:19 GMT ;785426119 44Wed, 16 Nov 94 08:46:11 CST ;784997171 45Wed, 9 Nov 1994 09:50:32 -0500 (EST) ;784392632 46Thu, 13 Oct 94 10:13:13 -0700 ;782068393 47Sat, 19 Nov 1994 16:59:14 +0100 ;785260754 48Thu, 3 Nov 94 14:10:47 EST ;783889847 49Thu, 3 Nov 94 21:51:09 EST ;783917469 50Fri, 4 Nov 94 9:24:52 EST ;783959092 51Wed, 9 Nov 94 09:38:54 EST ;784391934 52Mon, 14 Nov 94 13:20:12 EST ;784837212 53Wed, 16 Nov 94 17:09:13 EST ;785023753 54Tue, 15 Nov 94 12:27:01 PST ;784931221 55Fri, 18 Nov 1994 07:34:05 -0600 ;785165645 56Mon, 21 Nov 94 14:34:28 -0500 ;785446468 57Fri, 18 Nov 1994 12:05:47 -0800 (PST);785189147 58Fri, 18 Nov 1994 12:36:26 -0800 (PST);785190986 59Wed, 16 Nov 1994 15:58:58 GMT ;785001538 60Sun, 06 Nov 94 14:27:40 -0500 ;784150060 61Mon, 07 Nov 94 08:20:13 -0500 ;784214413 62Mon, 07 Nov 94 16:48:42 -0500 ;784244922 63Wed, 09 Nov 94 15:46:16 -0500 ;784413976 64Sun, 6 Nov 1994 02:38:17 -0800 ;784118297 65Tue, 1 Nov 1994 13:53:49 -0500 ;783716029 66Tue, 15 Nov 94 08:31:59 +0100 ;784884719 67Sun, 6 Nov 1994 11:09:12 -0500 (IST) ;784138152 68Fri, 4 Nov 94 12:52:10 EST ;783971530 69Mon, 31 Oct 1994 14:17:39 -0500 (EST);783631059 70Mon, 14 Nov 94 11:25:00 CST ;784833900 71Mon, 14 Nov 94 13:26:29 CST ;784841189 72Fri, 18 Nov 94 8:42:47 CST ;785169767 73Thu, 17 Nov 94 14:32:01 +0900 ;785050321 74Wed, 2 Nov 94 18:16:31 +0100 ;783796591 75Fri, 18 Nov 94 10:46:26 +0100 ;785151986 76Tue, 8 Nov 1994 22:39:28 +0200 ;784327168 77Wed, 16 Nov 1994 10:01:08 -0500 (EST);784998068 78Wed, 2 Nov 1994 16:59:42 -0800 ;783824382 79Wed, 9 Nov 94 10:00:23 PST ;784404023 80Fri, 18 Nov 94 17:01:43 PST ;785206903 81Mon, 14 Nov 1994 14:47:46 -0500 ;784842466 82Mon, 21 Nov 1994 04:56:04 -0500 (EST);785411764 83Mon, 21 Nov 1994 11:50:12 -0800 ;785447412 84Sat, 5 Nov 1994 14:04:16 -0600 (CST) ;784065856 85Sat, 05 Nov 94 13:10:13 MST ;784066213 86Wed, 02 Nov 94 10:47:48 -0800 ;783802068 87Wed, 02 Nov 94 13:19:15 -0800 ;783811155 88Thu, 03 Nov 94 15:27:07 -0800 ;783905227 89Fri, 04 Nov 94 09:12:12 -0800 ;783969132 90Wed, 9 Nov 1994 10:13:03 +0000 (GMT) ;784375983 91Wed, 9 Nov 1994 15:28:37 +0000 (GMT) ;784394917 92Wed, 2 Nov 1994 17:37:41 +0100 (MET) ;783794261 9305 Nov 94 14:22:19 PST ;784074139 9416 Nov 94 22:28:20 PST ;785053700 95Tue, 1 Nov 1994 19:51:15 -0800 ;783748275 96Wed, 2 Nov 94 12:21:23 GMT ;783778883 97Fri, 18 Nov 94 18:07:03 GMT ;785182023 98Wed, 16 Nov 1994 11:26:27 -0500 ;785003187 99Sun, 6 Nov 1994 13:48:49 -0500 ;784147729 100Tue, 8 Nov 1994 13:19:37 -0800 ;784329577 101Fri, 18 Nov 1994 11:01:12 -0800 ;785185272 102Mon, 21 Nov 1994 00:47:58 -0500 ;785396878 103Mon, 7 Nov 1994 14:22:48 -0800 (PST) ;784246968 104Wed, 16 Nov 1994 15:56:45 -0800 (PST);785030205 105Thu, 3 Nov 1994 13:17:47 +0000 ;783868667 106Wed, 9 Nov 1994 17:32:50 -0500 (EST) ;784420370 107Wed, 9 Nov 94 16:31:52 PST ;784427512 108Wed, 09 Nov 94 10:41:10 -0800 ;784406470 109Wed, 9 Nov 94 08:42:22 MST ;784395742 110Mon, 14 Nov 1994 08:32:13 -0800 ;784830733 111Mon, 14 Nov 1994 11:34:32 -0500 (EST);784830872 112Mon, 14 Nov 94 16:48:09 GMT ;784831689 113Tue, 15 Nov 1994 10:27:33 +0000 ;784895253 114Wed, 02 Nov 94 13:56:54 MST ;783809814 115Thu, 03 Nov 94 15:24:45 MST ;783901485 116Thu, 3 Nov 1994 15:13:53 -0700 (MST) ;783900833 117Fri, 04 Nov 94 08:15:13 MST ;783962113 118Thu, 3 Nov 94 18:15:47 EST ;783904547 119Tue, 08 Nov 94 07:02:33 MST ;784303353 120Thu, 3 Nov 94 18:15:47 EST ;783904547 121Tue, 15 Nov 94 07:26:05 MST ;784909565 122Wed, 2 Nov 1994 00:00:55 -0600 (CST) ;783756055 123Sun, 6 Nov 1994 01:19:13 -0600 (CST) ;784106353 124Mon, 7 Nov 1994 23:16:57 -0600 (CST) ;784271817 125Tue, 08 Nov 1994 13:21:21 -0600 ;784322481 126Mon, 07 Nov 94 13:47:37 PST ;784244857 127Tue, 08 Nov 94 11:23:19 PST ;784322599 128Tue, 01 Nov 1994 11:28:25 -0800 ;783718105 129Tue, 15 Nov 1994 13:11:47 -0800 ;784933907 130Tue, 15 Nov 1994 13:18:38 -0800 ;784934318 131Tue, 15 Nov 1994 0:18:38 -0800 ;784887518 132Jul 13 1999 1:23P GMT ;931872180 133Jul 13 1999 1:23P.M GMT ;931872180 134Jul 13 1999 1:23P.M. GMT ;931872180 1352001-02-26T13:44:12-0700 ;983220252 1362001-02-26T13:44-0700 ;983220240 1372001-02-26T13-0700 ;983217600 1382001-02-26T13-44-12-0700 ;983220252 1392001-02-26T13-44-0700 ;983220240 1402001-02-26T13-0700 ;983217600 14107/Nov/2000:16:45:56 +0100 ;973611956 1422002-11-07T23:31:49-05:00 ;1036729909 1432003-02-17T07:45:56Z ;1045467956 1442003-02-17T08:14:07.198189+0000 ;1045469647.198189 145!; 146 147require Time::Local; 148my $offset = Time::Local::timegm(0,0,0,1,0,70); 149 150@data = split(/\n/, $data); 151 152print "1..", scalar(@data),"\n"; 153$loop = 1; 154 155printf "# offset = %d\n", $offset; 156 157foreach (@data){ 158 my($str,$time_expect) = split ';', $_; 159 my $time = Date::Parse::str2time($str); 160 161 if($loop < 6) { 162 163 # The first five tests are parsed in the current time zone 164 # But the check number is in GMT 165 166 my @lt = localtime($time_expect); 167 my @gt = gmtime($time_expect); 168 169 $tzsec = ($gt[1] - $lt[1]) * 60 + ($gt[2] - $lt[2]) * 3600; 170 171 my($lday,$gday) = ($lt[7],$gt[7]); 172 if($lt[5] > $gt[5]) { 173 $tzsec -= 24 * 3600; 174 } 175 elsif($gt[5] > $lt[5]) { 176 $tzsec += 24 * 3600; 177 } 178 else { 179 $tzsec += ($gt[7] - $lt[7]) * (24 * 3600); 180 } 181 $time -= $tzsec; 182 } 183 184 $time_expect += $offset; 185 186 if(defined($time) and $time==$time_expect) { 187 print "ok $loop\n"; 188 } 189 else { 190 require Date::Format; 191 print "-"x50,"\nFAIL $loop\n"; 192 printf "%s\nDiff: %d\n", $str, $time - $time_expect; 193 printf "Expect: %10f %s",$time_expect,Date::Format::ctime($time_expect); 194 printf "Got: %10f %s",$time, Date::Format::ctime($time); 195 } 196 $loop++; 197} 198 199