You are here

public function DrupalDateTimeTest::testGetPhpDateTime in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Core/Datetime/DrupalDateTimeTest.php \Drupal\Tests\Core\Datetime\DrupalDateTimeTest::testGetPhpDateTime()
  2. 10 core/tests/Drupal/Tests/Core/Datetime/DrupalDateTimeTest.php \Drupal\Tests\Core\Datetime\DrupalDateTimeTest::testGetPhpDateTime()

@covers ::getPhpDateTime

File

core/tests/Drupal/Tests/Core/Datetime/DrupalDateTimeTest.php, line 220

Class

DrupalDateTimeTest
@coversDefaultClass \Drupal\Core\Datetime\DrupalDateTime @group Datetime

Namespace

Drupal\Tests\Core\Datetime

Code

public function testGetPhpDateTime() {
  $new_york = new \DateTimeZone('America/New_York');
  $berlin = new \DateTimeZone('Europe/Berlin');

  // Test retrieving a cloned copy of the wrapped \DateTime object, and that
  // altering it does not change the DrupalDateTime object.
  $drupaldatetime = DrupalDateTime::createFromFormat('Y-m-d H:i:s', '2017-07-13 22:40:00', $new_york, [
    'langcode' => 'en',
  ]);
  $this
    ->assertEquals(1500000000, $drupaldatetime
    ->getTimestamp());
  $this
    ->assertEquals('America/New_York', $drupaldatetime
    ->getTimezone()
    ->getName());
  $datetime = $drupaldatetime
    ->getPhpDateTime();
  $this
    ->assertInstanceOf('DateTime', $datetime);
  $this
    ->assertEquals(1500000000, $datetime
    ->getTimestamp());
  $this
    ->assertEquals('America/New_York', $datetime
    ->getTimezone()
    ->getName());
  $datetime
    ->setTimestamp(1400000000)
    ->setTimezone($berlin);
  $this
    ->assertEquals(1400000000, $datetime
    ->getTimestamp());
  $this
    ->assertEquals('Europe/Berlin', $datetime
    ->getTimezone()
    ->getName());
  $this
    ->assertEquals(1500000000, $drupaldatetime
    ->getTimestamp());
  $this
    ->assertEquals('America/New_York', $drupaldatetime
    ->getTimezone()
    ->getName());
}