Remove leading 0 in ms of date caster

This commit is contained in:
Dany Maillard 2017-08-03 18:41:46 +02:00
parent 0f2563c165
commit 94956ebae4
2 changed files with 19 additions and 7 deletions

View File

@ -32,7 +32,7 @@ class DateCaster
; ;
$a = array(); $a = array();
$a[$prefix.'date'] = new ConstStub($d->format('Y-m-d H:i:s.u '.($location ? 'e (P)' : 'P')), $title); $a[$prefix.'date'] = new ConstStub($d->format('Y-m-d H:i:'.self::formatSeconds($d->format('s'), $d->format('u')).($location ? ' e (P)' : ' P')), $title);
$stub->class .= $d->format(' @U'); $stub->class .= $d->format(' @U');
@ -59,7 +59,7 @@ class DateCaster
; ;
if (\PHP_VERSION_ID >= 70100 && isset($i->f)) { if (\PHP_VERSION_ID >= 70100 && isset($i->f)) {
$format .= $i->h || $i->i || $i->s || $i->f ? '%H:%I:%S.%F' : ''; $format .= $i->h || $i->i || $i->s || $i->f ? '%H:%I:'.self::formatSeconds($i->s, $i->f) : '';
} else { } else {
$format .= $i->h || $i->i || $i->s ? '%H:%I:%S' : ''; $format .= $i->h || $i->i || $i->s ? '%H:%I:%S' : '';
} }
@ -79,4 +79,9 @@ class DateCaster
return $filter & Caster::EXCLUDE_VERBOSE ? $z : $z + $a; return $filter & Caster::EXCLUDE_VERBOSE ? $z : $z + $a;
} }
private static function formatSeconds($s, $us)
{
return sprintf('%02d.%s', $s, 0 === ($len = strlen($t = rtrim($us, '0'))) ? '0' : ($len <= 3 ? str_pad($t, 3, '0') : $us));
}
} }

View File

@ -52,7 +52,7 @@ EODUMP;
$xDump = <<<'EODUMP' $xDump = <<<'EODUMP'
array:1 [ array:1 [
"\x00~\x00date" => 2017-08-30 00:00:00.000000 Europe/Zurich (+02:00) "\x00~\x00date" => 2017-08-30 00:00:00.0 Europe/Zurich (+02:00)
] ]
EODUMP; EODUMP;
@ -61,7 +61,7 @@ EODUMP;
$xDump = <<<'EODUMP' $xDump = <<<'EODUMP'
Symfony\Component\VarDumper\Caster\ConstStub { Symfony\Component\VarDumper\Caster\ConstStub {
+type: 1 +type: 1
+class: "2017-08-30 00:00:00.000000 Europe/Zurich (+02:00)" +class: "2017-08-30 00:00:00.0 Europe/Zurich (+02:00)"
+value: """ +value: """
Wednesday, August 30, 2017\n Wednesday, August 30, 2017\n
+%a from now\n +%a from now\n
@ -81,8 +81,15 @@ EODUMP;
public function provideDateTimes() public function provideDateTimes()
{ {
return array( return array(
array('2017-04-30 00:00:00.000000', 'Europe/Zurich', '2017-04-30 00:00:00.000000 Europe/Zurich (+02:00)'), array('2017-04-30 00:00:00.000000', 'Europe/Zurich', '2017-04-30 00:00:00.0 Europe/Zurich (+02:00)'),
array('2017-04-30 00:00:00.000000', '+02:00', '2017-04-30 00:00:00.000000 +02:00'), array('2017-04-30 00:00:00.000000', '+02:00', '2017-04-30 00:00:00.0 +02:00'),
array('2017-04-30 00:00:00.100000', '+02:00', '2017-04-30 00:00:00.100 +02:00'),
array('2017-04-30 00:00:00.120000', '+02:00', '2017-04-30 00:00:00.120 +02:00'),
array('2017-04-30 00:00:00.123000', '+02:00', '2017-04-30 00:00:00.123 +02:00'),
array('2017-04-30 00:00:00.123400', '+02:00', '2017-04-30 00:00:00.123400 +02:00'),
array('2017-04-30 00:00:00.123450', '+02:00', '2017-04-30 00:00:00.123450 +02:00'),
array('2017-04-30 00:00:00.123456', '+02:00', '2017-04-30 00:00:00.123456 +02:00'),
); );
} }
@ -162,7 +169,7 @@ EODUMP;
public function provideIntervals() public function provideIntervals()
{ {
$i = new \DateInterval('PT0S'); $i = new \DateInterval('PT0S');
$ms = \PHP_VERSION_ID >= 70100 && isset($i->f) ? '.000000' : ''; $ms = \PHP_VERSION_ID >= 70100 && isset($i->f) ? '.0' : '';
return array( return array(
array('PT0S', 0, '0s', '0s'), array('PT0S', 0, '0s', '0s'),