diff --git a/token.tokens.inc b/token.tokens.inc
index 9c0bd08..b8608b4 100644
--- a/token.tokens.inc
+++ b/token.tokens.inc
@@ -1579,18 +1579,17 @@ function field_tokens($type, $tokens, array $data = array(), array $options = ar
           }
         }
       }
-      elseif (in_array($field_item->getFieldDefinition()->getType(), ['datetime', 'daterange'])) {
-        $properties = ['date', 'start_date', 'end_date'];
-        foreach ($properties as $property) {
-          if($field_item->$property) {
-            $date_tokens = \Drupal::token()->findWithPrefix($tokens, $property);
-            if ($date_tokens) {
-              $datetime = $field_item->$property->getTimestamp();
-              $replacements += \Drupal::token()->generate('date', $date_tokens, ['date' => $datetime], $options, $bubbleable_metadata);
-            }
-          }
+      elseif (in_array($field_item->getFieldDefinition()->getType(), ['datetime', 'daterange']) && in_array($property_name, ['date', 'start_date', 'end_date'])) {
+        $date_tokens = \Drupal::token()->findWithPrefix($tokens, $property_name);
+        if(isset($tokens[$property_name])) {
+          $date_tokens['raw'] = $tokens[$property_name];
+        }
+        if ($date_tokens) {
+          $datetime = $field_item->$property_name->getTimestamp();
+          $replacements += \Drupal::token()->generate('date', $date_tokens, ['date' => $datetime], $options, $bubbleable_metadata);
         }
       }
       else {
