Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DateTime::Format::HTTPUser Contributed Perl DocumentaDateTime::Format::HTTP(3)

       DateTime::Format::HTTP -	Date conversion	routines

	   use DateTime::Format::HTTP;

	   my $class = 'DateTime::Format::HTTP';
	   $string = $class->format_datetime($dt); # Format as GMT ASCII time
	   $time = $class->parse_datetime($string); # convert ASCII date to machine time

       This module provides functions that deal	the date formats used by the
       HTTP protocol (and then some more).

   parse_datetime( $str	[, $zone] )
       The parse_datetime() function converts a	string to machine time.	It
       throws an error if the format of	$str is	unrecognized, or the time is
       outside the representable range.	The time formats recognized are	listed

       The function also takes an optional second argument that	specifies the
       default time zone to use	when converting	the date. This parameter is
       ignored if the zone is found in the date	string itself. If this
       parameter is missing, and the date string format	does not contain any
       zone specification, then	the floating time zone is used.

       The zone	should be one that is recognized by DateTime::TimeZone.

       Actual parsing is done with the HTTP::Date module. At the time of
       writing it supports the formats listed next. Consult that module's
       documentation in	case the list has been changed.

	"Wed, 09 Feb 1994 22:23:32 GMT"	      -- HTTP format
	"Thu Feb  3 17:03:55 GMT 1994"	      -- ctime(3) format
	"Thu Feb  3 00:00:00 1994",	      -- ANSI C	asctime() format
	"Tuesday, 08-Feb-94 14:15:29 GMT"     -- old rfc850 HTTP format
	"Tuesday, 08-Feb-1994 14:15:29 GMT"   -- broken	rfc850 HTTP format

	"03/Feb/1994:17:03:55 -0700"   -- common logfile format
	"09 Feb	1994 22:23:32 GMT"     -- HTTP format (no weekday)
	"08-Feb-94 14:15:29 GMT"       -- rfc850 format	(no weekday)
	"08-Feb-1994 14:15:29 GMT"     -- broken rfc850	format (no weekday)

	"1994-02-03 14:15:29 -0100"    -- ISO 8601 format
	"1994-02-03 14:15:29"	       -- zone is optional
	"1994-02-03"		       -- only date
	"1994-02-03T14:15:29"	       -- Use T	as separator
	"19940203T141529Z"	       -- ISO 8601 compact format
	"19940203"		       -- only date

	"08-Feb-94"	    -- old rfc850 HTTP format	 (no weekday, no time)
	"08-Feb-1994"	    -- broken rfc850 HTTP format (no weekday, no time)
	"09 Feb	1994"	    -- proposed	new HTTP format	 (no weekday, no time)
	"03/Feb/1994"	    -- common logfile format	 (no time, no offset)

	"Feb  3	 1994"	    -- Unix 'ls	-l' format
	"Feb  3	17:03"	    -- Unix 'ls	-l' format

	"11-15-96  03:52PM" -- Windows 'dir' format

       The parser ignores leading and trailing whitespace.  It also allow the
       seconds to be missing and the month to be numerical in most formats.

       If the year is missing, then we assume that the date is the first
       matching	date before current month.  If the year	is given with only 2
       digits, then parse_date() will select the century that makes the	year
       closest to the current date.

       The "format_datetime()" method converts a DateTime to a string. If the
       function	is called without an argument, it will use the current time.

       The string returned is in the format preferred for the HTTP protocol.
       This is a fixed length subset of	the format defined by RFC 1123,
       represented in Universal	Time (GMT).  An	example	of a time stamp	in
       this format is:

	  Sun, 06 Nov 1994 08:49:37 GMT

   format_iso( [$time] )
       Same as format_datetime(), but returns a	"YYYY-MM-DD
       hh:mm:ss"-formatted string representing time in the local time zone. It
       is strongly recommended that you	use "format_isoz" or "format_datetime"
       instead (as these provide time zone indication).

   format_isoz(	[$dt] )
       Same as format_iso(), but returns a "YYYY-MM-DD hh:mm:ssZ"-formatted
       string representing Universal Time.

       Gisle Aas (GAAS)	for writing HTTP::Date.

       Iain, for never quite finishing "HTTP::Date::XS".

       Support for this	module is provided via the email
       list. See	for more details.

       Alternatively, log them via the CPAN RT system via the web or email:

       This makes it much easier for me	to track things	and thus means your
       problem is less likely to be neglected.

       Copyright Iain Truskett,	2003. All rights reserved.  Sections of	the
       documentation Gisle Aas,	1995-1999.  Changes since version 0.35
       copyright David Rolsky, 2004.

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself, either Perl	version	5.000 or, at
       your option, any	later version of Perl 5	you may	have available.

       The full	text of	the licences can be found in the Artistic and COPYING
       files included with this	module,	or in perlartistic and perlgpl as
       supplied	with Perl 5.8.1	and later.

       Originally written by Iain Truskett <>, who died on
       December	29, 2003.

       Maintained by Dave Rolsky <> and	Christiaan Kras

       "" mailing list.

       perl, DateTime, HTTP::Date, DateTime::TimeZone.

perl v5.32.1			  2021-11-04	     DateTime::Format::HTTP(3)


Want to link to this manual page? Use this URL:

home | help