#!/usr/bin/perl -w # # getdate - convert a date string into a Unix time integer # Steve Kinzler, kinzler@cs.indiana.edu, Jan 00 # http://www.cs.indiana.edu/~kinzler/home.html#unix use strict; use Time::ParseDate; if (@ARGV) { print parsedate(join(' ', @ARGV)), "\n"; } else { my ($d, $t); while () { chomp; $d = 'unknown'; $t = parsedate($_) and $d = arpadate($t); printf "%40.40s: %s\n", $_, $d; } } exit(0); #--------------------------------------------------------------------- # Accept a date in total seconds since the epoch, and write it # in ARPA-mail standard form: # Fri, 28 Mar 1997 15:40:57 -0500 # # If nothing is passed in, the current time is used. # strftime() may not recognize %z, so compute GMT offset by hand. sub arpadate { use POSIX qw(gmtime mktime strftime); my ($result, $sec, $min, $hr, $mday, $mon, $yr, $dst); my ($now, $sign, @zone); $now = shift(@_) || time(); # find current time. ($sec, $min, $hr, $mday, $mon, $yr, undef, undef, $dst) = localtime($now); local($_) = strftime("%a, %d %b %Y %T ", $sec, $min, $hr, $mday, $mon, $yr); # if the day of the month has a leading zero, strip it if (/^(.....)0(.*)/) { $result = $1 . $2; } else { $result = $_; } # figure out the timezone; we don't need old values of # $min and $sec at this point. @zone = gmtime($now); $zone[8] = $dst; $sec = mktime(@zone); $min = ($now - $sec) / 60; # east or west of GMT? $sign = "+"; if ($min < 0) { # west $sign = "-"; $min = -$min; } # make recognizable GMT offset, like +0430 or -0500. return $result . $sign . sprintf("%2.2d", int($min / 60)) . sprintf("%2.2d", $min % 60); } __END__ 01 Mar 97 05:03:29 ( EST ) 01 Mar 97 05:03:29 (EST) 01 Mar 97 05:03:29 EST 01 Sep 96 23:26:43 EDT 02 Dec 96 13:53:00 02 Sep 96 15:39:09 +0000 05 Nov 94 14:22:19 PST 1/24/1995 1/24/97 11:46 AM 16 Nov 94 22:28:20 PST 16 Nov 94 22:28:20 PST 1995-01-24 1995-01-24T09:08:17.1823213 21 dec 17:05 21/dec 17:05 21/dec/93 17:05 23 Dec 1996 17:06:55 PST 30 AUG 96 12:03PM Fri, 03 Jan 1997 07:51:26 -0600 Fri, 04 Nov 94 08:15:13 MST Fri, 04 Nov 94 09:12:12 -0800 Fri, 07 Feb 97 08:14 EST Fri, 09 Aug 1996 00:04:20 -0500 (EST) Fri, 18 Nov 1994 07:34:05 -0600 Fri, 18 Nov 1994 11:01:12 -0800 Fri, 18 Nov 1994 12:05:47 -0800 (PST) Fri, 18 Nov 1994 12:36:26 -0800 (PST) Fri, 18 Nov 94 10:46:26 +0100 Fri, 18 Nov 94 17:01:43 PST Fri, 18 Nov 94 18:07:03 GMT Fri, 18 Nov 94 8:42:47 CST Fri, 4 Nov 94 12:52:10 EST Fri, 4 Nov 94 9:24:52 EST Friday, 15 Nov 96 10:20:58 CST January 8, 2006 9:47 AM Mon, 07 Nov 94 08:20:13 -0500 Mon, 07 Nov 94 13:47:37 PST Mon, 07 Nov 94 16:48:42 -0500 Mon, 14 Nov 1994 08:32:13 -0800 Mon, 14 Nov 1994 11:34:32 -0500 (EST) Mon, 14 Nov 1994 14:47:46 -0500 Mon, 14 Nov 94 11:25:00 CST Mon, 14 Nov 94 13:20:12 EST Mon, 14 Nov 94 13:26:29 CST Mon, 14 Nov 94 15:08:49 CST Mon, 14 Nov 94 16:48:09 GMT Mon, 17 Feb 97 11:59:22 GMT Mon, 21 Nov 1994 00:47:58 -0500 Mon, 21 Nov 1994 04:56:04 -0500 (EST) Mon, 21 Nov 1994 11:50:12 -0800 Mon, 21 Nov 94 04:28:18 CST Mon, 21 Nov 94 07:42:23 CST Mon, 21 Nov 94 13:55:19 GMT Mon, 21 Nov 94 14:05:32 GMT Mon, 21 Nov 94 14:34:28 -0500 Mon, 21 Oct 96 22:05:08 UT Mon, 31 Oct 1994 14:17:39 -0500 (EST) Mon, 7 Nov 1994 14:22:48 -0800 (PST) Mon, 7 Nov 1994 23:16:57 -0600 (CST) Sat, 05 Nov 94 13:10:13 MST Sat, 19 Nov 1994 16:59:14 +0100 Sat, 5 Nov 1994 14:04:16 -0600 (CST) Sat, 9 Nov 2002 09:50:32 -0500 (EST) Sun, 06 Nov 94 14:27:40 -0500 Sun, 6 Nov 1994 01:19:13 -0600 (CST) Sun, 6 Nov 1994 02:38:17 -0800 Sun, 6 Nov 1994 11:09:12 -0500 (IST) Sun, 6 Nov 1994 13:48:49 -0500 Thu, 03 Nov 94 15:24:45 MST Thu, 03 Nov 94 15:27:07 -0800 Thu, 13 Oct 94 10:13:13 -0700 Thu, 13 Oct 94 10:13:13 -0700 Thu, 17 Nov 94 03:19:30 CST Thu, 17 Nov 94 14:22:03 GMT Thu, 17 Nov 94 14:32:01 +0900 Thu, 3 Nov 1994 13:17:47 +0000 Thu, 3 Nov 1994 15:13:53 -0700 (MST) Thu, 3 Nov 94 14:10:47 EST Thu, 3 Nov 94 18:15:47 EST Thu, 3 Nov 94 21:51:09 EST Tue, 01 Nov 1994 11:28:25 -0800 Tue, 08 Nov 1994 13:21:21 -0600 Tue, 08 Nov 94 07:02:33 MST Tue, 08 Nov 94 11:23:19 PST Tue, 1 Nov 1994 13:53:49 -0500 Tue, 1 Nov 1994 19:51:15 -0800 Tue, 15 Nov 1994 0:18:38 -0800 Tue, 15 Nov 1994 10:27:33 +0000 Tue, 15 Nov 1994 13:11:47 -0800 Tue, 15 Nov 1994 13:18:38 -0800 Tue, 15 Nov 94 07:26:05 MST Tue, 15 Nov 94 08:31:59 +0100 Tue, 15 Nov 94 09:15:10 GMT Tue, 15 Nov 94 12:27:01 PST Tue, 26 May 1998 23:57:38 -0400 Tue, 8 Nov 1994 13:19:37 -0800 Tue, 8 Nov 1994 22:39:28 +0200 Wed, 02 Nov 94 10:47:48 -0800 Wed, 02 Nov 94 13:19:15 -0800 Wed, 02 Nov 94 13:56:54 MST Wed, 09 Nov 94 10:41:10 -0800 Wed, 09 Nov 94 15:46:16 -0500 Wed, 16 Jun 94 07:29:35 CST Wed, 16 Jun 94 07:29:35 CST Wed, 16 Nov 1994 10:01:08 -0500 (EST) Wed, 16 Nov 1994 11:26:27 -0500 Wed, 16 Nov 1994 15:56:45 -0800 (PST) Wed, 16 Nov 1994 15:58:58 GMT Wed, 16 Nov 94 05:30:51 CST Wed, 16 Nov 94 07:29:35 CST Wed, 16 Nov 94 08:46:11 CST Wed, 16 Nov 94 09:23:17 GMT Wed, 16 Nov 94 09:39:49 GMT Wed, 16 Nov 94 10:01:43 GMT Wed, 16 Nov 94 12:39:49 GMT Wed, 16 Nov 94 14:03:06 GMT Wed, 16 Nov 94 14:36:00 GMT Wed, 16 Nov 94 14:48:06 GMT Wed, 16 Nov 94 15:03:35 GMT Wed, 16 Nov 94 17:09:13 EST Wed, 2 Nov 1994 00:00:55 -0600 (CST) Wed, 2 Nov 1994 16:59:42 -0800 Wed, 2 Nov 1994 17:37:41 +0100 (MET) Wed, 2 Nov 94 12:21:23 GMT Wed, 2 Nov 94 18:16:31 +0100 Wed, 27 May 1998 05:04:03 +0100 Wed, 9 Nov 1994 09:50:32 -0500 (EST) Wed, 9 Nov 1994 10:13:03 +0000 (GMT) Wed, 9 Nov 1994 15:28:37 +0000 (GMT) Wed, 9 Nov 1994 17:32:50 -0500 (EST) Wed, 9 Nov 94 08:42:22 MST Wed, 9 Nov 94 09:38:54 EST Wed, 9 Nov 94 10:00:23 PST Wed, 9 Nov 94 16:31:52 PST last month next week today tomorrow yesterday 2 weeks ago 3 days ago 4 months ago Thursday, January 12, 2006 9:47 AM Thursday January 12, 2006 9:47 AM Thu January 12, 2006 9:47 AM