Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Added relevent links for parsing to the phpdoc
  • Loading branch information
mcfedr committed Sep 15, 2018
commit e21a1a4df1203086c090e7884f2f7232f12ad025
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,18 @@
/**
* @author Franz Wilding <[email protected]>
* @author Bernhard Schussek <[email protected]>
* @author Fred Cox <[email protected]>
*/
class DateTimeToHtml5DateTimeLocalTransformer extends BaseDateTimeTransformer
class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
{
const HTML5_FORMAT = 'Y-m-d\\TH:i:s';

/**
* Transforms a normalized date into a localized date without trailing timezone.
* Transforms a \DateTime into a local date and time string.
*
* According to the HTML standard, the input string of a datetime-local
* input is a RFC3339 date followed by 'T', followed by a RFC3339 time.
* http://w3c.github.io/html-reference/datatypes.html#form.data.datetime-local
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-local-date-and-time-string
*
* @param \DateTime|\DateTimeInterface $dateTime A DateTime object
*
Expand Down Expand Up @@ -57,7 +58,11 @@ public function transform($dateTime)
}

/**
* Transforms a formatted datetime-local string into a normalized date.
* Transforms a local date and time string into a \DateTime.
*
* When transforming back to DateTime the regex is slightly laxer, taking into
* account rules for parsing a local date and time string
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-local-date-and-time-string
*
* @param string $dateTimeLocal Formatted string
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
use Symfony\Component\Form\Extension\Core\DataTransformer\ArrayToPartsTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DataTransformerChain;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5DateTimeLocalTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5LocalDateTimeTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
Expand Down Expand Up @@ -75,7 +75,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)

if ('single_text' === $options['widget']) {
if (self::HTML5_FORMAT === $pattern) {
$builder->addViewTransformer(new DateTimeToHtml5DateTimeLocalTransformer(
$builder->addViewTransformer(new DateTimeToHtml5LocalDateTimeTransformer(
$options['model_timezone'],
$options['view_timezone']
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;

use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5DateTimeLocalTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5LocalDateTimeTransformer;

class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
class DateTimeToHtml5LocalDateTimeTransformerTest extends TestCase
{
public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
{
Expand Down Expand Up @@ -59,7 +59,7 @@ public function reverseTransformProvider()
*/
public function testTransform($fromTz, $toTz, $from, $to)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($fromTz, $toTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($fromTz, $toTz);

$this->assertSame($to, $transformer->transform(null !== $from ? new \DateTime($from) : null));
}
Expand All @@ -70,7 +70,7 @@ public function testTransform($fromTz, $toTz, $from, $to)
*/
public function testTransformDateTimeImmutable($fromTz, $toTz, $from, $to)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($fromTz, $toTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($fromTz, $toTz);

$this->assertSame($to, $transformer->transform(null !== $from ? new \DateTimeImmutable($from) : null));
}
Expand All @@ -80,7 +80,7 @@ public function testTransformDateTimeImmutable($fromTz, $toTz, $from, $to)
*/
public function testTransformRequiresValidDateTime()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer();
$transformer = new DateTimeToHtml5LocalDateTimeTransformer();
$transformer->transform('2010-01-01');
}

Expand All @@ -89,7 +89,7 @@ public function testTransformRequiresValidDateTime()
*/
public function testReverseTransform($toTz, $fromTz, $to, $from)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($toTz, $fromTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($toTz, $fromTz);

if (null !== $to) {
$this->assertEquals(new \DateTime($to), $transformer->reverseTransform($from));
Expand All @@ -103,7 +103,7 @@ public function testReverseTransform($toTz, $fromTz, $to, $from)
*/
public function testReverseTransformRequiresString()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer();
$transformer = new DateTimeToHtml5LocalDateTimeTransformer();
$transformer->reverseTransform(12345);
}

Expand All @@ -112,7 +112,7 @@ public function testReverseTransformRequiresString()
*/
public function testReverseTransformWithNonExistingDate()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer('UTC', 'UTC');
$transformer = new DateTimeToHtml5LocalDateTimeTransformer('UTC', 'UTC');

$transformer->reverseTransform('2010-04-31T04:05');
}
Expand All @@ -122,7 +122,7 @@ public function testReverseTransformWithNonExistingDate()
*/
public function testReverseTransformExpectsValidDateString()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer('UTC', 'UTC');
$transformer = new DateTimeToHtml5LocalDateTimeTransformer('UTC', 'UTC');

$transformer->reverseTransform('2010-2010-2010');
}
Expand Down