1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
<?php
declare(strict_types=1);
/**
* This file is part of the Carbon package.
*
* (c) Brian Nesbitt <brian@nesbot.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Tests\CarbonImmutable;
use Carbon\CarbonImmutable as Carbon;
use Generator;
use Tests\AbstractTestCase;
class ModifyNearDSTChangeTest extends AbstractTestCase
{
/**
* Tests transition through DST change hour in non default timezone
*
* @param string $dateString
* @param int $addHours
* @param string $expected
* @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
*/
public function testTransitionInNonDefaultTimezone($dateString, $addHours, $expected)
{
date_default_timezone_set('Europe/london');
$date = Carbon::parse($dateString, 'America/New_York');
$date = $date->addHours($addHours);
$this->assertSame($expected, $date->format('c'));
}
/**
* Tests transition through DST change hour in default timezone
*
* @param string $dateString
* @param int $addHours
* @param string $expected
* @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
*/
public function testTransitionInDefaultTimezone($dateString, $addHours, $expected)
{
date_default_timezone_set('America/New_York');
$date = Carbon::parse($dateString, 'America/New_York');
$date = $date->addHours($addHours);
$this->assertSame($expected, $date->format('c'));
}
public static function dataForTransitionTests(): Generator
{
// arguments:
// - Date string to Carbon::parse in America/New_York.
// - Hours to add
// - Resulting string in 'c' format
// testForwardTransition
// When standard time was about to reach 2010-03-14T02:00:00-05:00 clocks were turned forward 1 hour to
// 2010-03-14T03:00:00-04:00 local daylight time instead
yield ['2010-03-14T00:00:00', 24, '2010-03-15T00:00:00-04:00'];
// testBackwardTransition
// When local daylight time was about to reach 2010-11-07T02:00:00-04:00 clocks were turned backward 1 hour
// to 2010-11-07T01:00:00-05:00 local standard time instead
yield ['2010-11-07T00:00:00', 24, '2010-11-08T00:00:00-05:00'];
}
}
|