src/Peach/DT/HttpDateFormat.php
public function parseTimestamp($format)
    {
        $temp_date = array();
        if (preg_match("/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), ([0-3][0-9]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-9]{4}) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) GMT$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[5];
            $date["minute"] = $temp_date[6];
            $date["second"] = $temp_date[7];
            $date["month"]  = $this->parseMonthDescription($temp_date[3]);
            $date["day"]    = $temp_date[2];
            $date["year"]   = $temp_date[4];
        } else if (preg_match("/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), ([0-3][0-9])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-([0-9]{2}) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) GMT$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[5];
            $date["minute"] = $temp_date[6];
            $date["second"] = $temp_date[7];
            $date["month"]  = $this->parseMonthDescription($temp_date[3]);
            $date["day"]    = $temp_date[2];
            $date["year"]   = $this->getFullYear($temp_date[4]);
        } else if (preg_match("/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-3 ][0-9]) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) ([0-9]{4})$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[4];
            $date["minute"] = $temp_date[5];
            $date["second"] = $temp_date[6];
            $date["month"]  = $this->parseMonthDescription($temp_date[2]);
            // 日が1桁の場合先、半角スペースを0に置換
            $date["day"]    = str_replace(" ", "0", $temp_date[3]);
            // 定義済みの月の名前を数字に変換する
            $date["year"]   = $temp_date[7];
        } else {
            $this->throwFormatException($format);
        }
        
        $parsed = new Timestamp($date["year"], $date["month"], $date["day"], $date["hour"], $date["minute"], $date["second"]);
        return $parsed->add("minute", - $this->internalOffset);
    }
public function parseTimestamp($format)
    {
        $temp_date = array();
        if (preg_match("/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), ([0-3][0-9]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-9]{4}) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) GMT$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[5];
            $date["minute"] = $temp_date[6];
            $date["second"] = $temp_date[7];
            $date["month"]  = $this->parseMonthDescription($temp_date[3]);
            $date["day"]    = $temp_date[2];
            $date["year"]   = $temp_date[4];
        } else if (preg_match("/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), ([0-3][0-9])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-([0-9]{2}) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) GMT$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[5];
            $date["minute"] = $temp_date[6];
            $date["second"] = $temp_date[7];
            $date["month"]  = $this->parseMonthDescription($temp_date[3]);
            $date["day"]    = $temp_date[2];
            $date["year"]   = $this->getFullYear($temp_date[4]);
        } else if (preg_match("/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-3 ][0-9]) ([0-2][0-9]):([0-5][0-9]):([0-5][0-9]) ([0-9]{4})$/", $format, $temp_date)) {
            $date["hour"]   = $temp_date[4];
            $date["minute"] = $temp_date[5];
            $date["second"] = $temp_date[6];
            $date["month"]  = $this->parseMonthDescription($temp_date[2]);
            // 日が1桁の場合先、半角スペースを0に置換
            $date["day"]    = str_replace(" ", "0", $temp_date[3]);
            // 定義済みの月の名前を数字に変換する
            $date["year"]   = $temp_date[7];
        } else {
            $this->throwFormatException($format);
        }
        
        $parsed = new Timestamp($date["year"], $date["month"], $date["day"], $date["hour"], $date["minute"], $date["second"]);
        return $parsed->add("minute", - $this->internalOffset);
    }
HTTP-date 形式のフォーマットを Timestamp に変換します.

@param  string $format            HTTP-date 形式の文字列
@return Timestamp                 変換結果
@throws \InvalidArgumentException フォーマットが不正な場合