Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
25 / 25 |
StandardDate | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
10 | |
100.00% |
25 / 25 |
formatSymbol | |
100.00% |
1 / 1 |
10 | |
100.00% |
25 / 25 |
<?php | |
namespace Popy\Calendar\Formatter\SymbolFormatter; | |
use Popy\Calendar\FormatterInterface; | |
use Popy\Calendar\Parser\FormatToken; | |
use Popy\Calendar\Formatter\SymbolFormatterInterface; | |
use Popy\Calendar\ValueObject\DateRepresentationInterface; | |
/** | |
* Standard format, handling DateRepresentationInterface. | |
*/ | |
class StandardDate implements SymbolFormatterInterface | |
{ | |
/** | |
* @inheritDoc | |
*/ | |
public function formatSymbol(DateRepresentationInterface $input, FormatToken $token, FormatterInterface $formatter) | |
{ | |
if ($token->is('U')) { | |
// U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | |
return $input->getUnixTime(); | |
} | |
if ($token->is('u')) { | |
// u Microseconds | |
return sprintf('%06d', $input->getUnixMicroTime()); | |
} | |
if ($token->is('e')) { | |
// e Timezone identifier | |
return $input->getTimezone()->getName(); | |
} | |
if ($token->is('I')) { | |
// I (capital i) Whether or not the date is in daylight saving time | |
return (int)$input->getOffset()->isDst(); | |
} | |
if ($token->isOne('O', 'P')) { | |
// O Difference to Greenwich time (GMT) in hours | |
// P Difference to Greenwich time (GMT) with colon | |
$f = '%s%02d%02d'; | |
if ($token->is('P')) { | |
$f = '%s%02d:%02d'; | |
} | |
$value = intval($input->getOffset()->getValue() / 60); | |
return sprintf( | |
$f, | |
$value < 0 ? '-' : '+', | |
intval(abs($value) / 60), | |
intval(abs($value) % 60) | |
); | |
} | |
if ($token->is('T')) { | |
// T Timezone abbreviation | |
return $input->getOffset()->getAbbreviation(); | |
} | |
if ($token->is('Z')) { | |
// Z Timezone offset in seconds. | |
return (int)$input->getOffset()->getValue(); | |
} | |
} | |
} |