 jsonapi.services.yml                               | 13 +++
 .../Normalizer/DateTimeIso8601Normalizer.php       | 53 ++++++++++++
 .../Normalizer/DateTimeNormalizer.php              | 98 ++++++++++++++++++++++
 .../Normalizer/TimestampNormalizer.php             | 45 ++++++++++
 tests/src/Functional/BlockContentTest.php          | 14 +---
 tests/src/Functional/CommentTest.php               | 10 +--
 tests/src/Functional/EntityTestTest.php            |  4 +-
 tests/src/Functional/FeedTest.php                  | 13 +--
 tests/src/Functional/FileTest.php                  |  8 +-
 tests/src/Functional/MediaTest.php                 | 15 +---
 tests/src/Functional/MenuLinkContentTest.php       |  7 +-
 tests/src/Functional/NodeTest.php                  | 15 +---
 tests/src/Functional/TermTest.php                  |  7 +-
 tests/src/Functional/UserTest.php                  | 11 +--
 14 files changed, 230 insertions(+), 83 deletions(-)

diff --git a/jsonapi.services.yml b/jsonapi.services.yml
index b73d2a0..5488fca 100644
--- a/jsonapi.services.yml
+++ b/jsonapi.services.yml
@@ -165,3 +165,16 @@ services:
   serializer.normalizer.htt_exception.jsonapi:
     alias: serializer.normalizer.http_exception.jsonapi
     deprecated: The "%service_id%" service is deprecated. You should use the 'serializer.normalizer.http_exception.jsonapi' service instead.
+
+  # Forward compatibility.
+  # @todo Remove in Drupal 8.6 (assuming it contains https://www.drupal.org/project/drupal/issues/2926508).
+  serializer.normalizer.timestamp.jsonapi:
+    class: \Drupal\jsonapi\ForwardCompatibility\Normalizer\TimestampNormalizer
+    tags:
+      # Priority must be higher than serializer.normalizer.primitive_data.
+      - { name: normalizer, priority: 20, bc: bc_timestamp_normalizer_unix, bc_config_name: 'serialization.settings' }
+  serializer.normalizer.datetimeiso8601.jsonapi:
+    class: \Drupal\jsonapi\ForwardCompatibility\Normalizer\DateTimeIso8601Normalizer
+    tags:
+      # Priority must be higher than serializer.normalizer.primitive_data.
+      - { name: normalizer, priority: 20 }
diff --git a/src/ForwardCompatibility/Normalizer/DateTimeIso8601Normalizer.php b/src/ForwardCompatibility/Normalizer/DateTimeIso8601Normalizer.php
new file mode 100644
index 0000000..a3246c4
--- /dev/null
+++ b/src/ForwardCompatibility/Normalizer/DateTimeIso8601Normalizer.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Drupal\jsonapi\ForwardCompatibility\Normalizer;
+
+use Drupal\Core\TypedData\Plugin\DataType\DateTimeIso8601;
+use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
+
+/**
+ * Converts values for the DateTimeIso8601 data type to RFC3339.
+ *
+ * @internal
+ * @see \Drupal\serialization\Normalizer\DateTimeIso8601Normalizer
+ * @todo Remove when JSON API requires Drupal 8.6.
+ */
+class DateTimeIso8601Normalizer extends DateTimeNormalizer {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $allowedFormats = [
+    // RFC3339 only covers combined date and time representations. For date-only
+    // representations, we need to use ISO 8601. There isn't a constant we can
+    // use, so we have to hardcode the format.
+    // @see https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates
+    'date-only' => 'Y-m-d',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $supportedInterfaceOrClass = DateTimeIso8601::class;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function normalize($datetime, $format = NULL, array $context = []) {
+    $field_item = $datetime->getParent();
+    if ($field_item instanceof DateTimeItem && $field_item->getFieldDefinition()->getFieldStorageDefinition()->getSetting('datetime_type') === DateTimeItem::DATETIME_TYPE_DATE) {
+      return $datetime->getDateTime()->format($this->allowedFormats['date-only']);
+    }
+    return parent::normalize($datetime, $format, $context);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function denormalize($data, $class, $format = NULL, array $context = []) {
+    $date = parent::denormalize($data, $class, $format, $context);
+    $date->setTime(0, 0, 0);
+    return $date;
+  }
+
+}
diff --git a/src/ForwardCompatibility/Normalizer/DateTimeNormalizer.php b/src/ForwardCompatibility/Normalizer/DateTimeNormalizer.php
new file mode 100644
index 0000000..8c9140c
--- /dev/null
+++ b/src/ForwardCompatibility/Normalizer/DateTimeNormalizer.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace Drupal\jsonapi\ForwardCompatibility\Normalizer;
+
+use Drupal\Core\TypedData\Plugin\DataType\Timestamp;
+use Drupal\Core\TypedData\Type\DateTimeInterface;
+use Drupal\jsonapi\Normalizer\NormalizerBase;
+use Symfony\Component\Serializer\Exception\UnexpectedValueException;
+use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
+
+/**
+ * Converts values for datetime objects to RFC3339 and from common formats.
+ *
+ * @internal
+ * @see \Drupal\serialization\Normalizer\DateTimeNormalizer
+ * @todo Remove when JSON API requires Drupal 8.6.
+ */
+class DateTimeNormalizer extends NormalizerBase implements DenormalizerInterface {
+
+  /**
+   * Allowed datetime formats for the denormalizer.
+   *
+   * The list is chosen to be unambiguous and language neutral, but also common
+   * for data interchange.
+   *
+   * @var string[]
+   *
+   * @see http://php.net/manual/en/datetime.createfromformat.php
+   */
+  protected $allowedFormats = [
+    'RFC 3339' => \DateTime::RFC3339,
+    'ISO 8601' => \DateTime::ISO8601,
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $supportedInterfaceOrClass = DateTimeInterface::class;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function normalize($datetime, $format = NULL, array $context = []) {
+    return $datetime->getDateTime()
+      // Set an explicit timezone. Otherwise, timestamps may end up being
+      // normalized using the user's preferred timezone. Which would result in
+      // many variations and complex caching.
+      // @see \Drupal\Core\Datetime\DrupalDateTime::prepareTimezone()
+      // @see drupal_get_user_timezone()
+      ->setTimezone($this->getNormalizationTimezone())
+      ->format(\DateTime::RFC3339);
+  }
+
+  /**
+   * Gets the timezone to be used during normalization.
+   *
+   * @see ::normalize
+   *
+   * @returns \DateTimeZone
+   *   The timezone to use.
+   */
+  protected function getNormalizationTimezone() {
+    $default_site_timezone = \Drupal::config('system.date')->get('timezone.default');
+    return new \DateTimeZone($default_site_timezone);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function denormalize($data, $class, $format = NULL, array $context = []) {
+    // First check for a provided format, and if provided, create \DateTime
+    // object using it.
+    if (!empty($context['datetime_format'])) {
+      return \DateTime::createFromFormat($context['datetime_format'], $data['value']);
+    }
+
+    // Loop through the allowed formats and create a \DateTime from the
+    // input data if it matches the defined pattern. Since the formats are
+    // unambiguous (i.e., they reference an absolute time with a defined time
+    // zone), only one will ever match.
+    foreach ($this->allowedFormats as $format) {
+      $date = \DateTime::createFromFormat($format, $data['value']);
+      if ($date !== FALSE) {
+        return $date;
+      }
+    }
+
+    $format_strings = [];
+
+    foreach ($this->allowedFormats as $label => $format) {
+      $format_strings[] = "\"$format\" ($label)";
+    }
+
+    $formats = implode(', ', $format_strings);
+    throw new UnexpectedValueException(sprintf('The specified date "%s" is not in an accepted format: %s.', $data['value'], $formats));
+  }
+
+}
diff --git a/src/ForwardCompatibility/Normalizer/TimestampNormalizer.php b/src/ForwardCompatibility/Normalizer/TimestampNormalizer.php
new file mode 100644
index 0000000..95ecf2f
--- /dev/null
+++ b/src/ForwardCompatibility/Normalizer/TimestampNormalizer.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\jsonapi\ForwardCompatibility\Normalizer;
+
+use Drupal\Core\TypedData\Plugin\DataType\Timestamp;
+
+/**
+ * Converts values for the Timestamp data type to and from common formats.
+ *
+ * @internal
+ * @see \Drupal\serialization\Normalizer\TimestampNormalizer
+ * @todo Remove when JSON API requires Drupal 8.6.
+ */
+class TimestampNormalizer extends DateTimeNormalizer {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $allowedFormats = [
+    'UNIX timestamp' => 'U',
+    'ISO 8601' => \DateTime::ISO8601,
+    'RFC 3339' => \DateTime::RFC3339,
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $supportedInterfaceOrClass = Timestamp::class;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getNormalizationTimezone() {
+    return new \DateTimeZone('UTC');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function denormalize($data, $class, $format = NULL, array $context = []) {
+    $denormalized = parent::denormalize($data, $class, $format, $context);
+    return ['value' => $denormalized->getTimestamp()];
+  }
+
+}
diff --git a/tests/src/Functional/BlockContentTest.php b/tests/src/Functional/BlockContentTest.php
index 4670478..c2d271e 100644
--- a/tests/src/Functional/BlockContentTest.php
+++ b/tests/src/Functional/BlockContentTest.php
@@ -6,7 +6,6 @@ use Drupal\block_content\Entity\BlockContent;
 use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Url;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 
 /**
  * JSON API integration test for the "BlockContent" content entity type.
@@ -15,8 +14,6 @@ use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
  */
 class BlockContentTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -35,7 +32,7 @@ class BlockContentTest extends ResourceTestBase {
   /**
    * {@inheritdoc}
    *
-   * @var \Drupal\config_test\ConfigTestInterface
+   * @var \Drupal\block_content\BlockContentInterface
    */
   protected $entity;
 
@@ -123,16 +120,11 @@ class BlockContentTest extends ResourceTestBase {
             'summary' => NULL,
             'processed' => "<p>The name &quot;llama&quot; was adopted by European settlers from native Peruvians.</p>\n",
           ],
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'info' => 'Llama',
           'revision_id' => 1,
           'revision_log' => NULL,
-          'revision_created' => (int) $this->entity->getRevisionCreationTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'revision_created' => $this->formatExpectedTimestampItemValues($this->entity->getRevisionCreationTime()), */
-          // @todo Attempt to remove this in https://www.drupal.org/project/drupal/issues/2933518.
+          'revision_created' => (new \DateTime())->setTimestamp($this->entity->getRevisionCreationTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'revision_translation_affected' => TRUE,
           'status' => FALSE,
           'langcode' => 'en',
diff --git a/tests/src/Functional/CommentTest.php b/tests/src/Functional/CommentTest.php
index b14368a..4d2ffe1 100644
--- a/tests/src/Functional/CommentTest.php
+++ b/tests/src/Functional/CommentTest.php
@@ -11,7 +11,6 @@ use Drupal\Core\Cache\Cache;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Url;
 use Drupal\entity_test\Entity\EntityTest;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 use Drupal\user\Entity\User;
 use GuzzleHttp\RequestOptions;
 
@@ -22,7 +21,6 @@ use GuzzleHttp\RequestOptions;
  */
 class CommentTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
   use CommentTestTrait;
 
   /**
@@ -152,12 +150,8 @@ class CommentTest extends ResourceTestBase {
         ],
         'attributes' => [
           'cid' => 1,
-          'created' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'created' => $this->formatExpectedTimestampItemValues(123456789), */
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
+          'created' => '1973-11-29T21:33:09+00:00',
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'comment_body' => [
             'value' => 'The name "llama" was adopted by European settlers from native Peruvians.',
             'format' => 'plain_text',
diff --git a/tests/src/Functional/EntityTestTest.php b/tests/src/Functional/EntityTestTest.php
index 8398821..14c7d9c 100644
--- a/tests/src/Functional/EntityTestTest.php
+++ b/tests/src/Functional/EntityTestTest.php
@@ -114,9 +114,7 @@ class EntityTestTest extends ResourceTestBase {
         ],
         'attributes' => [
           'id' => 1,
-          'created' => (int) $this->entity->get('created')->value,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'created' => $this->formatExpectedTimestampItemValues((int) $this->entity->get('created')->value), */
+          'created' => (new \DateTime())->setTimestamp($this->entity->get('created')->value)->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'field_test_text' => NULL,
           'langcode' => 'en',
           'name' => 'Llama',
diff --git a/tests/src/Functional/FeedTest.php b/tests/src/Functional/FeedTest.php
index 9df2a72..11d99a4 100644
--- a/tests/src/Functional/FeedTest.php
+++ b/tests/src/Functional/FeedTest.php
@@ -4,7 +4,6 @@ namespace Drupal\Tests\jsonapi\Functional;
 
 use Drupal\aggregator\Entity\Feed;
 use Drupal\Core\Url;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 
 /**
  * JSON API integration test for the "Feed" content entity type.
@@ -13,8 +12,6 @@ use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
  */
 class FeedTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -115,18 +112,14 @@ class FeedTest extends ResourceTestBase {
           'url' => 'http://example.com/rss.xml',
           'title' => 'Feed',
           'refresh' => 900,
-          'checked' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'checked' => $this->formatExpectedTimestampItemValues(123456789), */
-          'queued' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'queued' => $this->formatExpectedTimestampItemValues(123456789), */
+          'checked' => '1973-11-29T21:33:09+00:00',
+          'queued' => '1973-11-29T21:33:09+00:00',
           'link' => 'http://example.com',
           'description' => 'Feed Resource Test 1',
           'image' => 'http://example.com/feed_logo',
           'hash' => 'abcdefg',
           'etag' => 'hijklmn',
-          'modified' => 123456789,
+          'modified' => '1973-11-29T21:33:09+00:00',
           // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
           /* 'modified' => $this->formatExpectedTimestampItemValues(123456789), */
           'langcode' => 'en',
diff --git a/tests/src/Functional/FileTest.php b/tests/src/Functional/FileTest.php
index 4d6af09..8bab816 100644
--- a/tests/src/Functional/FileTest.php
+++ b/tests/src/Functional/FileTest.php
@@ -129,12 +129,8 @@ class FileTest extends ResourceTestBase {
           'self' => $self_url,
         ],
         'attributes' => [
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
-          'created' => (int) $this->entity->getCreatedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'created' => $this->formatExpectedTimestampItemValues((int) $this->entity->getCreatedTime()), */
+          'created' => (new \DateTime())->setTimestamp($this->entity->getCreatedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'fid' => 1,
           'filemime' => 'text/plain',
           'filename' => 'drupal.txt',
diff --git a/tests/src/Functional/MediaTest.php b/tests/src/Functional/MediaTest.php
index 41f2a15..19cd086 100644
--- a/tests/src/Functional/MediaTest.php
+++ b/tests/src/Functional/MediaTest.php
@@ -6,7 +6,6 @@ use Drupal\Core\Url;
 use Drupal\file\Entity\File;
 use Drupal\media\Entity\Media;
 use Drupal\media\Entity\MediaType;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 use Drupal\user\Entity\User;
 
 /**
@@ -16,8 +15,6 @@ use Drupal\user\Entity\User;
  */
 class MediaTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -167,15 +164,9 @@ class MediaTest extends ResourceTestBase {
           'langcode' => 'en',
           'name' => 'Llama',
           'status' => TRUE,
-          'created' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'created' => $this->formatExpectedTimestampItemValues(123456789), */
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
-          'revision_created' => (int) $this->entity->getRevisionCreationTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'revision_created' => $this->formatExpectedTimestampItemValues((int) $this->entity->getRevisionCreationTime()), */
+          'created' => '1973-11-29T21:33:09+00:00',
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
+          'revision_created' => (new \DateTime())->setTimestamp($this->entity->getRevisionCreationTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'default_langcode' => TRUE,
           'revision_log_message' => NULL,
           // @todo Attempt to remove this in https://www.drupal.org/project/drupal/issues/2933518.
diff --git a/tests/src/Functional/MenuLinkContentTest.php b/tests/src/Functional/MenuLinkContentTest.php
index cb258fc..2bd350e 100644
--- a/tests/src/Functional/MenuLinkContentTest.php
+++ b/tests/src/Functional/MenuLinkContentTest.php
@@ -4,7 +4,6 @@ namespace Drupal\Tests\jsonapi\Functional;
 
 use Drupal\Core\Url;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 
 /**
  * JSON API integration test for the "MenuLinkContent" content entity type.
@@ -13,8 +12,6 @@ use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
  */
 class MenuLinkContentTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -99,9 +96,7 @@ class MenuLinkContentTest extends ResourceTestBase {
             'title' => NULL,
             'options' => [],
           ],
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'default_langcode' => TRUE,
           'description' => 'Llama Gabilondo',
           'enabled' => TRUE,
diff --git a/tests/src/Functional/NodeTest.php b/tests/src/Functional/NodeTest.php
index fb611c5..1e7331c 100644
--- a/tests/src/Functional/NodeTest.php
+++ b/tests/src/Functional/NodeTest.php
@@ -8,7 +8,6 @@ use Drupal\Core\Url;
 use Drupal\jsonapi\Normalizer\HttpExceptionNormalizer;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 use Drupal\user\Entity\User;
 use GuzzleHttp\RequestOptions;
 
@@ -19,8 +18,6 @@ use GuzzleHttp\RequestOptions;
  */
 class NodeTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -135,12 +132,8 @@ class NodeTest extends ResourceTestBase {
           'self' => $self_url,
         ],
         'attributes' => [
-          'created' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'created' => $this->formatExpectedTimestampItemValues(123456789), */
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
+          'created' => '1973-11-29T21:33:09+00:00',
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'default_langcode' => TRUE,
           'langcode' => 'en',
           'nid' => 1,
@@ -151,9 +144,7 @@ class NodeTest extends ResourceTestBase {
           ],
           'promote' => TRUE,
           'revision_log' => NULL,
-          'revision_timestamp' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'revision_timestamp' => $this->formatExpectedTimestampItemValues(123456789), */
+          'revision_timestamp' => '1973-11-29T21:33:09+00:00',
           // @todo Attempt to remove this in https://www.drupal.org/project/drupal/issues/2933518.
           'revision_translation_affected' => TRUE,
           'status' => TRUE,
diff --git a/tests/src/Functional/TermTest.php b/tests/src/Functional/TermTest.php
index 2df62f8..156a476 100644
--- a/tests/src/Functional/TermTest.php
+++ b/tests/src/Functional/TermTest.php
@@ -8,7 +8,6 @@ use Drupal\Core\Cache\Cache;
 use Drupal\Core\Url;
 use Drupal\taxonomy\Entity\Term;
 use Drupal\taxonomy\Entity\Vocabulary;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 use GuzzleHttp\RequestOptions;
 
 /**
@@ -18,8 +17,6 @@ use GuzzleHttp\RequestOptions;
  */
 class TermTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -215,9 +212,7 @@ class TermTest extends ResourceTestBase {
           'self' => $self_url,
         ],
         'attributes' => [
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          /* 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()), */
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'default_langcode' => TRUE,
           'description' => [
             'value' => 'It is a little known fact that llamas cannot count higher than seven.',
diff --git a/tests/src/Functional/UserTest.php b/tests/src/Functional/UserTest.php
index fc21d7a..9942866 100644
--- a/tests/src/Functional/UserTest.php
+++ b/tests/src/Functional/UserTest.php
@@ -6,7 +6,6 @@ use Drupal\Component\Serialization\Json;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Url;
 use Drupal\jsonapi\Normalizer\HttpExceptionNormalizer;
-use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
 use Drupal\user\Entity\User;
 use GuzzleHttp\RequestOptions;
 
@@ -17,8 +16,6 @@ use GuzzleHttp\RequestOptions;
  */
 class UserTest extends ResourceTestBase {
 
-  use BcTimestampNormalizerUnixTestTrait;
-
   /**
    * {@inheritdoc}
    */
@@ -132,12 +129,8 @@ class UserTest extends ResourceTestBase {
           'self' => $self_url,
         ],
         'attributes' => [
-          'created' => 123456789,
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          // 'created' => $this->formatExpectedTimestampItemValues(123456789),
-          'changed' => $this->entity->getChangedTime(),
-          // @todo uncomment this in https://www.drupal.org/project/jsonapi/issues/2929932
-          // 'changed' => $this->formatExpectedTimestampItemValues($this->entity->getChangedTime()),
+          'created' => '1973-11-29T21:33:09+00:00',
+          'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339),
           'default_langcode' => TRUE,
           'langcode' => 'en',
           'name' => 'Llama',
