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;
 }
Ejemplo n.º 2
0
 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;
 }