本文整理汇总了PHP中Sabre\VObject\DateTimeParser::parseVCardDateTime方法的典型用法代码示例。如果您正苦于以下问题:PHP DateTimeParser::parseVCardDateTime方法的具体用法?PHP DateTimeParser::parseVCardDateTime怎么用?PHP DateTimeParser::parseVCardDateTime使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sabre\VObject\DateTimeParser
的用法示例。
在下文中一共展示了DateTimeParser::parseVCardDateTime方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getJsonValue
/**
* 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::parseVCardDateTime($this->getValue());
$dateStr = $parts['year'] . '-' . $parts['month'] . '-' . $parts['date'] . 'T' . $parts['hour'] . ':' . $parts['minute'] . ':' . $parts['second'];
// Timezone
if (!is_null($parts['timezone'])) {
$dateStr .= $parts['timezone'];
}
return array($dateStr);
}
示例2: testBadVCardDate
/**
* @dataProvider vcardDates
* @expectedException \InvalidArgumentException
*/
function testBadVCardDate()
{
DateTimeParser::parseVCardDateTime('1985---01');
}
示例3: validate
/**
* Validates the node for correctness.
*
* The following options are supported:
* Node::REPAIR - May attempt to automatically repair the problem.
*
* This method returns an array with detected problems.
* Every element has the following properties:
*
* * level - problem level.
* * message - A human-readable string describing the issue.
* * node - A reference to the problematic node.
*
* The level means:
* 1 - The issue was repaired (only happens if REPAIR was turned on)
* 2 - An inconsequential issue
* 3 - A severe issue.
*
* @param int $options
* @return array
*/
public function validate($options = 0)
{
$messages = parent::validate($options);
$value = $this->getValue();
try {
DateTimeParser::parseVCardDateTime($value);
} catch (\InvalidArgumentException $e) {
$messages[] = array('level' => 3, 'message' => 'The supplied value (' . $value . ') is not a correct DATE-AND-OR-TIME property', 'node' => $this);
}
return $messages;
}
示例4: getResult
/**
* Parses the input data and returns a VCALENDAR.
*
* @return Component/VCalendar
*/
function getResult()
{
$calendar = new VCalendar();
foreach ($this->objects as $object) {
// Skip if there is no BDAY property.
if (!$object->select('BDAY')) {
continue;
}
// We've seen clients (ez-vcard) putting "BDAY:" properties
// without a value into vCards. If we come across those, we'll
// skip them.
if (empty($object->BDAY->getValue())) {
continue;
}
// We're always converting to vCard 4.0 so we can rely on the
// VCardConverter handling the X-APPLE-OMIT-YEAR property for us.
$object = $object->convert(Document::VCARD40);
// Skip if the card has no FN property.
if (!isset($object->FN)) {
continue;
}
// Skip if the BDAY property is not of the right type.
if (!$object->BDAY instanceof Property\VCard\DateAndOrTime) {
continue;
}
// Skip if we can't parse the BDAY value.
try {
$dateParts = DateTimeParser::parseVCardDateTime($object->BDAY->getValue());
} catch (\InvalidArgumentException $e) {
continue;
}
// Set a year if it's not set.
$unknownYear = false;
if (!$dateParts['year']) {
$object->BDAY = self::DEFAULT_YEAR . '-' . $dateParts['month'] . '-' . $dateParts['date'];
$unknownYear = true;
}
// Create event.
$event = $calendar->add('VEVENT', ['SUMMARY' => sprintf($this->format, $object->FN->getValue()), 'DTSTART' => new \DateTime($object->BDAY->getValue()), 'RRULE' => 'FREQ=YEARLY', 'TRANSP' => 'TRANSPARENT']);
// add VALUE=date
$event->DTSTART['VALUE'] = 'DATE';
// Add X-SABRE-BDAY property.
if ($unknownYear) {
$event->add('X-SABRE-BDAY', 'BDAY', ['X-SABRE-VCARD-UID' => $object->UID->getValue(), 'X-SABRE-VCARD-FN' => $object->FN->getValue(), 'X-SABRE-OMIT-YEAR' => self::DEFAULT_YEAR]);
} else {
$event->add('X-SABRE-BDAY', 'BDAY', ['X-SABRE-VCARD-UID' => $object->UID->getValue(), 'X-SABRE-VCARD-FN' => $object->FN->getValue()]);
}
}
return $calendar;
}
示例5: getJsonValue
/**
* 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::parseVCardDateTime($this->getValue());
$dateStr = '';
// Year
if (!is_null($parts['year'])) {
$dateStr .= $parts['year'];
if (!is_null($parts['month'])) {
// If a year and a month is set, we need to insert a separator
// dash.
$dateStr .= '-';
}
} else {
if (!is_null($parts['month']) || !is_null($parts['date'])) {
// Inserting two dashes
$dateStr .= '--';
}
}
// Month
if (!is_null($parts['month'])) {
$dateStr .= $parts['month'];
if (isset($parts['date'])) {
// If month and date are set, we need the separator dash.
$dateStr .= '-';
}
} else {
if (isset($parts['date'])) {
// If the month is empty, and a date is set, we need a 'empty
// dash'
$dateStr .= '-';
}
}
// Date
if (!is_null($parts['date'])) {
$dateStr .= $parts['date'];
}
// Early exit if we don't have a time string.
if (is_null($parts['hour']) && is_null($parts['minute']) && is_null($parts['second'])) {
return array($dateStr);
}
$dateStr .= 'T';
// Hour
if (!is_null($parts['hour'])) {
$dateStr .= $parts['hour'];
if (!is_null($parts['minute'])) {
$dateStr .= ':';
}
} else {
// We know either minute or second _must_ be set, so we insert a
// dash for an empty value.
$dateStr .= '-';
}
// Minute
if (!is_null($parts['minute'])) {
$dateStr .= $parts['minute'];
if (!is_null($parts['second'])) {
$dateStr .= ':';
}
} else {
if (isset($parts['second'])) {
// Dash for empty minute
$dateStr .= '-';
}
}
// Second
if (!is_null($parts['second'])) {
$dateStr .= $parts['second'];
}
// Timezone
if (!is_null($parts['timezone'])) {
$dateStr .= $parts['timezone'];
}
return array($dateStr);
}