|
Packit Service |
b31dc1 |
NAME
|
|
Packit Service |
b31dc1 |
DateTime::Format::HTTP - Date conversion routines
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
SYNOPSIS
|
|
Packit Service |
b31dc1 |
use DateTime::Format::HTTP;
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
my $class = 'DateTime::Format::HTTP';
|
|
Packit Service |
b31dc1 |
$string = $class->format_datetime($dt); # Format as GMT ASCII time
|
|
Packit Service |
b31dc1 |
$time = $class->parse_datetime($string); # convert ASCII date to machine time
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
DESCRIPTION
|
|
Packit Service |
b31dc1 |
This module provides functions that deal the date formats used by the
|
|
Packit Service |
b31dc1 |
HTTP protocol (and then some more).
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
METHODS
|
|
Packit Service |
b31dc1 |
parse_datetime( $str [, $zone] )
|
|
Packit Service |
b31dc1 |
The parse_datetime() function converts a string to machine time. It
|
|
Packit Service |
b31dc1 |
throws an error if the format of $str is unrecognized, or the time is
|
|
Packit Service |
b31dc1 |
outside the representable range. The time formats recognized are listed
|
|
Packit Service |
b31dc1 |
below.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
The function also takes an optional second argument that specifies the
|
|
Packit Service |
b31dc1 |
default time zone to use when converting the date. This parameter is
|
|
Packit Service |
b31dc1 |
ignored if the zone is found in the date string itself. If this
|
|
Packit Service |
b31dc1 |
parameter is missing, and the date string format does not contain any
|
|
Packit Service |
b31dc1 |
zone specification, then the floating time zone is used.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
The zone should be one that is recognized by DateTime::TimeZone.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
Actual parsing is done with the HTTP::Date module. At the time of
|
|
Packit Service |
b31dc1 |
writing it supports the formats listed next. Consult that module's
|
|
Packit Service |
b31dc1 |
documentation in case the list has been changed.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"Wed, 09 Feb 1994 22:23:32 GMT" -- HTTP format
|
|
Packit Service |
b31dc1 |
"Thu Feb 3 17:03:55 GMT 1994" -- ctime(3) format
|
|
Packit Service |
b31dc1 |
"Thu Feb 3 00:00:00 1994", -- ANSI C asctime() format
|
|
Packit Service |
b31dc1 |
"Tuesday, 08-Feb-94 14:15:29 GMT" -- old rfc850 HTTP format
|
|
Packit Service |
b31dc1 |
"Tuesday, 08-Feb-1994 14:15:29 GMT" -- broken rfc850 HTTP format
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"03/Feb/1994:17:03:55 -0700" -- common logfile format
|
|
Packit Service |
b31dc1 |
"09 Feb 1994 22:23:32 GMT" -- HTTP format (no weekday)
|
|
Packit Service |
b31dc1 |
"08-Feb-94 14:15:29 GMT" -- rfc850 format (no weekday)
|
|
Packit Service |
b31dc1 |
"08-Feb-1994 14:15:29 GMT" -- broken rfc850 format (no weekday)
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"1994-02-03 14:15:29 -0100" -- ISO 8601 format
|
|
Packit Service |
b31dc1 |
"1994-02-03 14:15:29" -- zone is optional
|
|
Packit Service |
b31dc1 |
"1994-02-03" -- only date
|
|
Packit Service |
b31dc1 |
"1994-02-03T14:15:29" -- Use T as separator
|
|
Packit Service |
b31dc1 |
"19940203T141529Z" -- ISO 8601 compact format
|
|
Packit Service |
b31dc1 |
"19940203" -- only date
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"08-Feb-94" -- old rfc850 HTTP format (no weekday, no time)
|
|
Packit Service |
b31dc1 |
"08-Feb-1994" -- broken rfc850 HTTP format (no weekday, no time)
|
|
Packit Service |
b31dc1 |
"09 Feb 1994" -- proposed new HTTP format (no weekday, no time)
|
|
Packit Service |
b31dc1 |
"03/Feb/1994" -- common logfile format (no time, no offset)
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"Feb 3 1994" -- Unix 'ls -l' format
|
|
Packit Service |
b31dc1 |
"Feb 3 17:03" -- Unix 'ls -l' format
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
"11-15-96 03:52PM" -- Windows 'dir' format
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
The parser ignores leading and trailing whitespace. It also allow the
|
|
Packit Service |
b31dc1 |
seconds to be missing and the month to be numerical in most formats.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
If the year is missing, then we assume that the date is the first
|
|
Packit Service |
b31dc1 |
matching date *before* current month. If the year is given with only 2
|
|
Packit Service |
b31dc1 |
digits, then parse_date() will select the century that makes the year
|
|
Packit Service |
b31dc1 |
closest to the current date.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
format_datetime()
|
|
Packit Service |
b31dc1 |
The "format_datetime()" method converts a DateTime to a string. If the
|
|
Packit Service |
b31dc1 |
function is called without an argument, it will use the current time.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
The string returned is in the format preferred for the HTTP protocol.
|
|
Packit Service |
b31dc1 |
This is a fixed length subset of the format defined by RFC 1123,
|
|
Packit Service |
b31dc1 |
represented in Universal Time (GMT). An example of a time stamp in this
|
|
Packit Service |
b31dc1 |
format is:
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
Sun, 06 Nov 1994 08:49:37 GMT
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
format_iso( [$time] )
|
|
Packit Service |
b31dc1 |
Same as format_datetime(), but returns a "YYYY-MM-DD hh:mm:ss"-formatted
|
|
Packit Service |
b31dc1 |
string representing time in the local time zone. It is strongly
|
|
Packit Service |
b31dc1 |
recommended that you use "format_isoz" or "format_datetime" instead (as
|
|
Packit Service |
b31dc1 |
these provide time zone indication).
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
format_isoz( [$dt] )
|
|
Packit Service |
b31dc1 |
Same as format_iso(), but returns a "YYYY-MM-DD hh:mm:ssZ"-formatted
|
|
Packit Service |
b31dc1 |
string representing Universal Time.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
THANKS
|
|
Packit Service |
b31dc1 |
Gisle Aas (GAAS) for writing HTTP::Date.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
Iain, for never quite finishing "HTTP::Date::XS".
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
SUPPORT
|
|
Packit Service |
b31dc1 |
Support for this module is provided via the datetime@perl.org email
|
|
Packit Service |
b31dc1 |
list. See http://lists.perl.org/ for more details.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
Alternatively, log them via the CPAN RT system via the web or email:
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DateTime%3A%3AFormat%3A%3AHTTP
|
|
Packit Service |
b31dc1 |
bug-datetime-format-http@rt.cpan.org
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
This makes it much easier for me to track things and thus means your
|
|
Packit Service |
b31dc1 |
problem is less likely to be neglected.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
LICENCE AND COPYRIGHT
|
|
Packit Service |
b31dc1 |
Copyright Iain Truskett, 2003. All rights reserved. Sections of the
|
|
Packit Service |
b31dc1 |
documentation Gisle Aas, 1995-1999. Changes since version 0.35 copyright
|
|
Packit Service |
b31dc1 |
David Rolsky, 2004.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
This library is free software; you can redistribute it and/or modify it
|
|
Packit Service |
b31dc1 |
under the same terms as Perl itself, either Perl version 5.000 or, at
|
|
Packit Service |
b31dc1 |
your option, any later version of Perl 5 you may have available.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
The full text of the licences can be found in the Artistic and COPYING
|
|
Packit Service |
b31dc1 |
files included with this module, or in perlartistic and perlgpl as
|
|
Packit Service |
b31dc1 |
supplied with Perl 5.8.1 and later.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
AUTHOR
|
|
Packit Service |
b31dc1 |
Originally written by Iain Truskett <spoon@cpan.org>, who died on
|
|
Packit Service |
b31dc1 |
December 29, 2003.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
Maintained by Dave Rolsky <autarch@urth.org> and Christiaan Kras
|
|
Packit Service |
b31dc1 |
<ckras@cpan.org>
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
SEE ALSO
|
|
Packit Service |
b31dc1 |
"datetime@perl.org" mailing list.
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
http://datetime.perl.org/
|
|
Packit Service |
b31dc1 |
|
|
Packit Service |
b31dc1 |
perl, DateTime, HTTP::Date, DateTime::TimeZone.
|
|
Packit Service |
b31dc1 |
|