libwww-perl-5.813 > HTTP::Date


HTTP::Date - date conversion routines

HTTP::Date - 日付変換ルーチン


 use HTTP::Date;

 $string = time2str($time);    # Format as GMT ASCII time
 $time = str2time($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). Only the first two functions, time2str() and str2time(), are exported by default.

このモジュールは HTTP プロトコルによって使われる日付フォーマットを扱う関数を (そしてそれ以上のものを) 提供します。 デフォルトでは最初の 2 つの関数、time2str() と str2time() だけが エクスポートされます。

time2str( [$time] )

The time2str() function converts a machine time (seconds since epoch) to a string. If the function is called without an argument, it will use the current time.

time2str() 関数はマシン時刻 (紀元からの秒数) を文字列に変換します。 もしこの関数が引数無しで呼ばれれば、現在時刻を使います。

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:

文字列は、HTTP プロトコルに適したフォーマットで返されます。 これは固定長で、RFC 1123 で定義されているサブセット、世界時刻 (GMT) で 表されます。 このフォーマットでのタイムスタンプの例を以下に示します:

   Sun, 06 Nov 1994 08:49:37 GMT
str2time( $str [, $zone] )

The str2time() function converts a string to machine time. It returns undef if the format of $str is unrecognized, otherwise whatever the Time::Local functions can make out of the parsed time. Dates before the system's epoch may not work on all operating systems. The time formats recognized are the same as for parse_date().

str2time() 関数は文字列をマシン時刻に変換します。 もし $str のフォーマットが理解できなければ undef を返し、 さもなければ、パースした時刻に対して Time::Local 関数が出力したものを 返します。 システムの期限以前の日付は、全てのオペレーティングシステムでは 動作しないかもしれません。 理解される時刻フォーマットは parse_date() と同じです。

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 local time zone is assumed.

この関数は、日付を変換するときに使われるデフォルトの時間帯を指定する オプションの 2 番目の引数も取ることが出来ます。 日付文字列自身に時間帯が見つかれば、このパラメータは無視されます。 もしこのパラメータがなく、日付文字列のフォーマットに時間帯の指定が 入っていなければ、ローカル時間帯が想定されます。

If the zone is not "GMT" or numerical (like "-0800" or "+0100"), then the Time::Zone module must be installed in order to get the date recognized.

時間帯が "GMT" でも ("-0800" や "+0100" のような) 数値でもなければ、 日付を理解するために Time::Zone モジュールが インストールされていなければなりません。

parse_date( $str )

This function will try to parse a date string, and then return it as a list of numerical values followed by a (possible undefined) time zone specifier; ($year, $month, $day, $hour, $min, $sec, $tz). The $year returned will not have the number 1900 subtracted from it and the $month numbers start with 1.

この関数は日付文字列を解析しようとし、(未定義かもしれない) 時間帯指定子に 従って、数値のリストとして返します; ($year, $month, $day, $hour, $min, $sec, $tz)。 返される $year は 1900 を 引かれない 数値を持ち、 $month は 1 から始まります。

In scalar context the numbers are interpolated in a string of the "YYYY-MM-DD hh:mm:ss TZ"-format and returned.

スカラコンテキストでは "YYYY-MM-DD hh:mm:ss TZ" というフォーマットの 文字列に展開され、返されます。

If the date is unrecognized, then the empty list is returned.


The function is able to parse the following formats:


 "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.

もし年 (year) がなければ、日付は、現在の月より前で最初にマッチした 日付であると想定します。 年が 2 桁だけで指定されれば、parse_date() はその年が、現在の時刻に最も 近くなるような世紀を選びます。

time2iso( [$time] )

Same as time2str(), but returns a "YYYY-MM-DD hh:mm:ss"-formatted string representing time in the local time zone.

time2str() と同じですが、しかしローカル時間帯での時刻を表す、 "YYYY-MM-DD hh:mm:ss" でフォーマットされた文字列を返します。

time2isoz( [$time] )

Same as time2str(), but returns a "YYYY-MM-DD hh:mm:ssZ"-formatted string representing Universal Time.

time2str() と同じですが、しかし世界時を表す、 "YYYY-MM-DD hh:mm:ssZ" でフォーマットされた文字列を返します。


"time" in perlfunc, Time::Zone


Copyright 1995-1999, Gisle Aas

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.