Hippo2000 (2000/7/28)
HTTP::Dateモジュールなのです。
作者はGisle Aasさんです。メールで許可をいただきました。
HTTP::Date - 日付変換ルーチン
use HTTP::Date;
$string = time2str($time); # GMT ASCII時刻にフォーマット $time = str2time($string); # ASCII日付をマシン時刻に変換
このモジュールはHTTPプロトコルによって使われる日付フォーマットを扱う関数を(そしてそれ以上のものを)提供します。デフォルトでは最初の2つの関数、time2str()とstr2time()だけがエクスポートされます。
文字列は、HTTPプロトコルのために提出されているフォーマットで返されます。これは固定長で、RFC 1123で定義されているサブセット、世界時刻(GMT)で表されます。このフォーマットでのタイムスタンプの例を以下に示します:
Sun, 06 Nov 1994 08:49:37 GMT
この関数は、日付を変換するときに使われるデフォルトの時間帯を指定するオプションの2番目の引数も取ることが出来ます。日付文字列自身に時間帯が見つかれば、このパラメータは無視されます。もしこのパラメータがなく、日付文字列のフォーマットに時間帯の指定が入っていなければ、ローカル時間帯が想定されます。
時間帯が"GMT"でも("-800"や"+0100"のような)数値でもなければ、日付を理解するためにTime::Time::Zoneモジュールがインストールさてていなければいけません。
スカラ・コンテキストでは"YYYY-MM-DD hh:mm:ss TZ"というフォーマットの文字列に書きこまれ、返されます:
日付が理解できなければ、空のリストが返されます。
この関数は以下のフォーマットを解析することができます:
"Wed, 09 Feb 1994 22:23:32 GMT" -- HTTP フォーマット "Thu Feb 3 17:03:55 GMT 1994" -- ctime(3) フォーマット "Thu Feb 3 00:00:00 1994", -- ANSI C asctime() フォーマット "Tuesday, 08-Feb-94 14:15:29 GMT" -- old rfc850 HTTP フォーマット "Tuesday, 08-Feb-1994 14:15:29 GMT" -- 崩れた rfc850 HTTP フォーマット
"03/Feb/1994:17:03:55 -0700" -- 一般的なログファイル・フォーマット "09 Feb 1994 22:23:32 GMT" -- HTTP フォーマット(曜日無し) "08-Feb-94 14:15:29 GMT" -- rfc850 フォーマット (曜日無し) "08-Feb-1994 14:15:29 GMT" -- 崩れたrfc850 フォーマット (フォーマット)
"1994-02-03 14:15:29 -0100" -- ISO 8601 フォーマット "1994-02-03 14:15:29" -- 時間帯(zone)はオプション "1994-02-03" -- 日付のみ "1994-02-03T14:15:29" -- セパレータとしてTを使う "19940203T141529Z" -- ISO 8601 コンパクト・フォーマット "19940203" -- 日付のみ
"08-Feb-94" -- 古いrfc850 HTTP フォーマット (曜日無し、時刻無し) "08-Feb-1994" -- 崩れた rfc850 HTTP フォーマット (曜日無し、時刻無し) "09 Feb 1994" -- 提案された新しいHTTP フォーマット (曜日無し、時刻無し) "03/Feb/1994" -- 一般的なログファイル・フォーマット (時刻無し、オフセットなし)
"Feb 3 1994" -- Unix 'ls -l' フォーマット "Feb 3 17:03" -- Unix 'ls -l' フォーマット
"11-15-96 03:52PM" -- Windows 'dir' フォーマット
パーサは前や後ろについた空白を無視します。またほとんどのフォーマットで秒を指定しなかったり、月を数字で指定することも許します。
もし年(year)がなければ、日付は、現在の月より前で最初にマッチした日付であると想定します。年が2桁だけで指定されれば、parse_date()はその年が、現在の時刻に最も近くなるような世紀を選びます。
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.
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。