首先,您需要了解自己的格式
/Date(1365004652303-0500)/
那你有
- 时间戳(U)= 1365004652
- 毫秒(u)= 303
- 与格林威治时间(GMT)的差(O)= -0500
建立格式
$date = '/Date(1365004652303-0500)/';preg_match('/(d{10})(d{3})([+-]d{4})/', $date, $matches);$dt = DateTime::createFromFormat("U.u.O",vsprintf('%2$s.%3$s.%4$s', $matches));echo $dt->format('r');输出量
Wed, 03 Apr 2013 15:57:32 -0500 ^ |= Can you see the GMT ?
interface DateFormatParser{ public function parse($string);}abstract class PregDateParser implements DateFormatParser{ protected $pattern, $format, $mask; public function parse($string) { $string = (string)$string; $pattern = $this->pattern; $format = $this->format; $mask = $this->mask; $r = preg_match($pattern, $string, $matches); if (!$r) { throw new UnexpectedValueException('Preg Regex Pattern failed.'); } $buffer = vsprintf($mask, $matches); $result = DateTime::createFromFormat($format, $buffer); if (!$result) { throw new UnexpectedValueException(sprintf('Failed To Create from Format "%s" for "%s".', $format, $buffer)); } return $result; }}class JsonTimestampWithOffsetParser extends PregDateParser{ protected $pattern = '/^/Date((d{10})(d{3})([+-]d{4}))/$/'; protected $format = 'U.u.O'; protected $mask = '%2$s.%3$s.%4$s';}$date = '/Date(1365004652303-0500)/';$parser = new JsonTimestampWithOffsetParser;$dt = $parser->parse($date);echo $dt->format('r');


