/** * Returns the value, in the format it should be encoded for json. * * This method must always return an array. * * @return array */ function getJsonValue() { $parts = DateTimeParser::parseVCardTime($this->getValue()); $timeStr = ''; // Hour if (!is_null($parts['hour'])) { $timeStr .= $parts['hour']; if (!is_null($parts['minute'])) { $timeStr .= ':'; } } else { // We know either minute or second _must_ be set, so we insert a // dash for an empty value. $timeStr .= '-'; } // Minute if (!is_null($parts['minute'])) { $timeStr .= $parts['minute']; if (!is_null($parts['second'])) { $timeStr .= ':'; } } else { if (isset($parts['second'])) { // Dash for empty minute $timeStr .= '-'; } } // Second if (!is_null($parts['second'])) { $timeStr .= $parts['second']; } // Timezone if (!is_null($parts['timezone'])) { if ($parts['timezone'] === 'Z') { $timeStr .= 'Z'; } else { $timeStr .= preg_replace('/([0-9]{2})([0-9]{2})$/', '$1:$2', $parts['timezone']); } } return [$timeStr]; }
/** * Returns the value, in the format it should be encoded for json. * * This method must always return an array. * * @return array */ public function getJsonValue() { $parts = DateTimeParser::parseVCardTime($this->getValue()); $timeStr = ''; // Hour if (!is_null($parts['hour'])) { $timeStr .= $parts['hour']; if (!is_null($parts['minute'])) { $timeStr .= ':'; } } else { // We know either minute or second _must_ be set, so we insert a // dash for an empty value. $timeStr .= '-'; } // Minute if (!is_null($parts['minute'])) { $timeStr .= $parts['minute']; if (!is_null($parts['second'])) { $timeStr .= ':'; } } else { if (isset($parts['second'])) { // Dash for empty minute $timeStr .= '-'; } } // Second if (!is_null($parts['second'])) { $timeStr .= $parts['second']; } // Timezone if (!is_null($parts['timezone'])) { $timeStr .= $parts['timezone']; } return array($timeStr); }
/** * @dataProvider vcardDates * @expectedException \InvalidArgumentException */ function testBadVCardTime() { DateTimeParser::parseVCardTime('23:12:166'); }