function parse($dt) { if (is_a($dt, 'PHPRPC_Date')) { return $dt; } if (is_int($dt)) { return new PHPRPC_Date($dt); } $shortFormat = '(\\d|\\d{2}|\\d{3}|\\d{4})-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12]\\d|3[01])'; if (preg_match("/^{$shortFormat}\$/", $dt, $match)) { $year = intval($match[1]); $month = intval($match[2]); $day = intval($match[3]); if (PHPRPC_Date::isValidDate($year, $month, $day)) { $date = new PHPRPC_Date(false); $date->year = $year; $date->month = $month; $date->day = $day; return $date; } else { return false; } } $longFormat = $shortFormat . ' (\\d|0\\d|1\\d|2[0-3]):(\\d|[0-5]\\d):(\\d|[0-5]\\d)'; if (preg_match("/^{$longFormat}\$/", $dt, $match)) { $year = intval($match[1]); $month = intval($match[2]); $day = intval($match[3]); if (PHPRPC_Date::isValidDate($year, $month, $day)) { $date = new PHPRPC_Date(false); $date->year = $year; $date->month = $month; $date->day = $day; $date->hour = intval($match[4]); $date->minute = intval($match[5]); $date->second = intval($match[6]); return $date; } else { return false; } } $fullFormat = $longFormat . '\\.(\\d|\\d{2}|\\d{3})'; if (preg_match("/^{$fullFormat}\$/", $dt, $match)) { $year = intval($match[1]); $month = intval($match[2]); $day = intval($match[3]); if (PHPRPC_Date::isValidDate($year, $month, $day)) { $date = new PHPRPC_Date(false); $date->year = $year; $date->month = $month; $date->day = $day; $date->hour = intval($match[4]); $date->minute = intval($match[5]); $date->second = intval($match[6]); $date->millisecond = intval($match[7]); return $date; } else { return false; } } return false; }
function set() { $num = func_num_args(); $args = func_get_args(); if ($num >= 3) { if (!PHPRPC_Date::isValidDate($args[0], $args[1], $args[2])) { return false; } $this->year = (int) $args[0]; $this->month = (int) $args[1]; $this->day = (int) $args[2]; if ($num == 3) { return true; } } if ($num >= 6) { if (!PHPRPC_Date::isValidTime($args[3], $args[4], $args[5])) { return false; } $this->hour = (int) $args[3]; $this->minute = (int) $args[4]; $this->second = (int) $args[5]; if ($num == 6) { return true; } } if ($num == 7 && ($args[6] >= 0 && $args[6] <= 999)) { $this->millisecond = (int) $args[6]; return true; } return false; }