Skip to content

Commit 73ec9a6

Browse files
committed
[Form] Fixed DateType/TimeType that were broken since 849fb2998485639d253e2438ecf78f62cc833a53 and 1c4a75a00a86df3e17979be86bddaafc108daf98
1 parent 5386477 commit 73ec9a6

File tree

3 files changed

+22
-72
lines changed

3 files changed

+22
-72
lines changed

Extension/Core/Type/DateType.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ public function buildForm(FormBuilderInterface $builder, array $options)
5757

5858
if ('single_text' === $options['widget']) {
5959
$builder->addViewTransformer(new DateTimeToLocalizedStringTransformer(
60-
null,
61-
null,
60+
$options['model_timezone'],
61+
$options['view_timezone'],
6262
$dateFormat,
6363
$timeFormat,
6464
$calendar,
@@ -105,23 +105,23 @@ public function buildForm(FormBuilderInterface $builder, array $options)
105105
->add('month', $options['widget'], $monthOptions)
106106
->add('day', $options['widget'], $dayOptions)
107107
->addViewTransformer(new DateTimeToArrayTransformer(
108-
null, null, array('year', 'month', 'day')
108+
$options['model_timezone'], $options['view_timezone'], array('year', 'month', 'day')
109109
))
110110
->setAttribute('formatter', $formatter)
111111
;
112112
}
113113

114114
if ('string' === $options['input']) {
115115
$builder->addModelTransformer(new ReversedTransformer(
116-
new DateTimeToStringTransformer(null, null, 'Y-m-d')
116+
new DateTimeToStringTransformer($options['model_timezone'], $options['model_timezone'], 'Y-m-d')
117117
));
118118
} elseif ('timestamp' === $options['input']) {
119119
$builder->addModelTransformer(new ReversedTransformer(
120-
new DateTimeToTimestampTransformer(null, null)
120+
new DateTimeToTimestampTransformer($options['model_timezone'], $options['model_timezone'])
121121
));
122122
} elseif ('array' === $options['input']) {
123123
$builder->addModelTransformer(new ReversedTransformer(
124-
new DateTimeToArrayTransformer(null, null, array('year', 'month', 'day'))
124+
new DateTimeToArrayTransformer($options['model_timezone'], $options['model_timezone'], array('year', 'month', 'day'))
125125
));
126126
}
127127
}

Extension/Core/Type/TimeType.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
4848
}
4949

5050
if ('single_text' === $options['widget']) {
51-
$builder->addViewTransformer(new DateTimeToStringTransformer(null, null, $format));
51+
$builder->addViewTransformer(new DateTimeToStringTransformer($options['model_timezone'], $options['view_timezone'], $format));
5252
} else {
5353
$hourOptions = $minuteOptions = $secondOptions = array(
5454
'error_bubbling' => true,
@@ -109,20 +109,20 @@ public function buildForm(FormBuilderInterface $builder, array $options)
109109
$builder->add('second', $options['widget'], $secondOptions);
110110
}
111111

112-
$builder->addViewTransformer(new DateTimeToArrayTransformer(null, null, $parts, 'text' === $options['widget']));
112+
$builder->addViewTransformer(new DateTimeToArrayTransformer($options['model_timezone'], $options['view_timezone'], $parts, 'text' === $options['widget']));
113113
}
114114

115115
if ('string' === $options['input']) {
116116
$builder->addModelTransformer(new ReversedTransformer(
117-
new DateTimeToStringTransformer(null, null, 'H:i:s')
117+
new DateTimeToStringTransformer($options['model_timezone'], $options['model_timezone'], 'H:i:s')
118118
));
119119
} elseif ('timestamp' === $options['input']) {
120120
$builder->addModelTransformer(new ReversedTransformer(
121-
new DateTimeToTimestampTransformer(null, null)
121+
new DateTimeToTimestampTransformer($options['model_timezone'], $options['model_timezone'])
122122
));
123123
} elseif ('array' === $options['input']) {
124124
$builder->addModelTransformer(new ReversedTransformer(
125-
new DateTimeToArrayTransformer(null, null, $parts)
125+
new DateTimeToArrayTransformer($options['model_timezone'], $options['model_timezone'], $parts)
126126
));
127127
}
128128
}

Tests/Extension/Core/Type/DateTypeTest.php

Lines changed: 11 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -380,93 +380,43 @@ public function testThrowExceptionIfDaysIsInvalid()
380380
));
381381
}
382382

383-
public function testSetDataWithDifferentNegativeUTCTimezoneDateTime()
383+
public function testSetDataWithNegativeTimezoneOffsetStringInput()
384384
{
385385
$form = $this->factory->create('date', null, array(
386386
'format' => \IntlDateFormatter::MEDIUM,
387-
'model_timezone' => 'America/New_York',
388-
'view_timezone' => 'Pacific/Tahiti',
387+
'model_timezone' => 'UTC',
388+
'view_timezone' => 'America/New_York',
389389
'input' => 'string',
390390
'widget' => 'single_text',
391391
));
392392

393393
$form->setData('2010-06-02');
394394

395+
// 2010-06-02 00:00:00 UTC
396+
// 2010-06-01 20:00:00 UTC-4
395397
$this->assertEquals('01.06.2010', $form->getViewData());
396398
}
397399

398-
public function testSetDataWithDifferentTimezonesDateTime()
400+
public function testSetDataWithNegativeTimezoneOffsetDateTimeInput()
399401
{
400402
$form = $this->factory->create('date', null, array(
401403
'format' => \IntlDateFormatter::MEDIUM,
402-
'model_timezone' => 'America/New_York',
403-
'view_timezone' => 'Pacific/Tahiti',
404+
'model_timezone' => 'UTC',
405+
'view_timezone' => 'America/New_York',
404406
'input' => 'datetime',
405407
'widget' => 'single_text',
406408
));
407409

408-
$dateTime = new \DateTime('2010-06-02 America/New_York');
410+
$dateTime = new \DateTime('2010-06-02 UTC');
409411

410412
$form->setData($dateTime);
411413

414+
// 2010-06-02 00:00:00 UTC
415+
// 2010-06-01 20:00:00 UTC-4
412416
$this->assertDateTimeEquals($dateTime, $form->getData());
413417
$this->assertEquals('01.06.2010', $form->getViewData());
414418
}
415419

416-
public function testSetDataWithDifferentPositiveUTCTimezoneDateTime()
417-
{
418-
date_default_timezone_set('Pacific/Tahiti');
419-
420-
$form = $this->factory->create('date', null, array(
421-
'format' => \IntlDateFormatter::MEDIUM,
422-
'input' => 'datetime',
423-
'widget' => 'single_text',
424-
));
425-
426-
$dateTime = new \DateTime('2010-06-02 Australia/Melbourne');
427-
428-
$form->setData($dateTime);
429-
430-
$this->assertDateTimeEquals($dateTime, $form->getData());
431-
$this->assertEquals('02.06.2010', $form->getViewData());
432-
}
433-
434-
public function testSetDataWithSamePositiveUTCTimezoneDateTime()
435-
{
436-
date_default_timezone_set('Australia/Melbourne');
437-
438-
$form = $this->factory->create('date', null, array(
439-
'format' => \IntlDateFormatter::MEDIUM,
440-
'input' => 'datetime',
441-
'widget' => 'single_text',
442-
));
443-
444-
$dateTime = new \DateTime('2010-06-02 Australia/Melbourne');
445-
446-
$form->setData($dateTime);
447-
448-
$this->assertDateTimeEquals($dateTime, $form->getData());
449-
$this->assertEquals('02.06.2010', $form->getViewData());
450-
}
451-
452-
public function testSetDataWithSameNegativeUTCTimezoneDateTime()
453-
{
454-
date_default_timezone_set('America/New_York');
455-
456-
$form = $this->factory->create('date', null, array(
457-
'format' => \IntlDateFormatter::MEDIUM,
458-
'input' => 'datetime',
459-
'widget' => 'single_text',
460-
));
461-
462-
$dateTime = new \DateTime('2010-06-02 America/New_York');
463-
464-
$form->setData($dateTime);
465-
466-
$this->assertDateTimeEquals($dateTime, $form->getData());
467-
$this->assertEquals('02.06.2010', $form->getViewData());
468-
}
469-
470420
public function testYearsOption()
471421
{
472422
$form = $this->factory->create('date', null, array(

0 commit comments

Comments
 (0)